python判断字符串是否包含在列表中的方法
list和str转换分为两种类型
类型一:将字符串以一定的分割符分割成不同的元素,通过元素组成列表
方法1:利用strip和split函数
常用示例:str转list 数据以列表的形式的字符串,转换为列表
例如 response="[a,b,c]"
str1="[a,b,c]"
print(type(str1))
<class 'str'>
转换为列表,
res=response.strip('[')
res=res.strip(']')
res=res.split(',')
print(type(res))
<class 'list'>
其中
strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。
split()方法用于通过指定分隔符对字符串进行切片,切片后生成列表。
方法2,利用JSON中间转化,该方法在 列表字典 类的字符串效果非常好。处理后列表元素是字典。如果用方法1处理后列表元素是以“,”分割的字符串。如下例,使用方法1转换后data[0]是 字符串 {"name": "aaa" 使用方法2转换后为 字典 { "name": "aaa", "num": "11"}
import json
str1="[{
"name": "aaa",
"num": "11"
}, {
"name": "bbb",
"num": "22"
}]"
#将字符串转为json格式
data = json.loads(str1)
print(type(data))
list转换为str
使用join方法
基本使用)
: 需要进行合并的list对象,其中每个元素必须为str类型
中每个元素按顺序用分隔符
类型二:将字符串整体与列表互相转换
str转list
a="abcd"
a = list(a)
print(a)
输出为 ['a', 'b', 'c', 'd']
list转str
如果列表中的元素有int型,必须先把int转成str,然后在做字符串拼接
lst = [1, 2, 3]
将所有的int转换为str
lst1=list(map(lambda x:str(x),lst))
str1= ''.join(lst)
列表中的所有元素都是字符串
lst = ['a', 'b', 'c', 'd', 'e', 'f','123']
str1 = ''.join(lst)
首先我们先定义一个列表,定义列表很简单,列表使用方括号表示,列表内的元素没有类型限制。
例如
123456789101112 | test_list = [ 1, 6, 3, 5, 3, 4 ] ` print("查看 4 是否在列表中 ( 使用循环 ) : ") ` `for i in test_list: if(i == 4) : print ("存在") print("查看 4 是否在列表中 ( 使用 in 关键字 ) : ") if (4 in test_list): print ("存在")` |
---|
以上实例输出结果为:
1234 | 查看 4 是否在列表中 ( 使用循环 ) : `存在查看 4 是否在列表中 ( 使用 in 关键字 ) : 存在` |
---|
例如
1234567891011121314151617 | from bisect import bisect_left ` # 初始化列表test_list_set = [ 1, 6, 3, 5, 3, 4 ] test_list_bisect = [ 1, 6, 3, 5, 3, 4 ] ` `print("查看 4 是否在列表中 ( 使用 set() + in) : ") test_list_set = set(test_list_set) if 4 in test_list_set : print ("存在") print("查看 4 是否在列表中 ( 使用 sort() + bisect_left() ) : ") ` `test_list_bisect.sort() if bisect_left(test_list_bisect, 4): print ("存在")` |
---|
输出结果为
1234 | 查看 4 是否在列表中 ( 使用 set() + in) : `存在查看 4 是否在列表中 ( 使用 sort() + bisect_left() ) : 存在` |
---|
成员操作符 in
**
偷偷说一句:in不只是在字符串中可以使用哦!期待后面的教程叭
使用字符串对象的 find() 、 rfind() 、 index() 、 rindex()
**
find()和index()的区别
方法 | 区别 |
---|---|
find() | 获取值时,如果要查找的值不存在,会返回-1 |
index() | 获取值的索引时,如果不存在值,会报错 |
find()和rfind()的区别
方法 | 区别 |
---|---|
find() | 从字符串左边开始查询子字符串匹配到的第一个索引(从0开始) |
rfind() | 从字符串右边开始查询字符串匹配到的第一个索引(从0开始) |
index()和rindex()的区别
方法 | 区别 |
---|---|
index() | 从字符串左边开始查询子字符串匹配到的第一个索引(从0开始) |
rindex() | 从字符串右边开始查询字符串匹配到的第一个索引(从0开始) |
lili = ["sex:girl", "yuwen:90", "shuxue:95"]
lilei = ["sex:boy", "yuwen:70", "shuxue:92"]
student = [] # 学生信息列表---二元列表
student.append(lili) # 将学生姓名lili信息加入学生信息大列表
student.append(lilei) # 将学生姓名lilei信息加入到学生信息大列表
student.insert(0, "name:lili") # 在学生信息大列表最开始位置放上lili的名字元素
student.insert(2, "name:lilei") # 在学生信息大列表最开始位置放上lilei的名字元素
lili.append("height:165cm") # 给lili增加身高信息
lilei.append("height:178cm") # 给lilei增加身高信息
while True: # 循环输入学生信息
# print("请输入学生信息:")
name = input("请输入学生姓名:")
sex = input("请输入学生性别:")
yuwen = input("请输入语言成绩:")
shuxue = input("请输入数学成绩:")
temp_mes = [] # 临时定义单个学生信息列表,存放输入的信息
# 将学生信息增加到临时单个学生信息列表中
temp_mes.append("sex:" + sex)
temp_mes.append("yuwen:" + yuwen)
temp_mes.append("shuxue:" + shuxue)
student.append("name:" + name)
student.append(temp_mes) # 将输入的单个学生信息放入学生信息大列表
temp = input("如果学生输入完毕请按Q,如果没输完按任意键继续")
# 给出退出循环机制
if temp == "q":
break
'''
以下是判断学生信息是否输入完整,如果不完整提醒补充
因为学生信息大列表的结构是:姓名,列表,这样一对的形式出现,所以只需要判断
名字后面的列表里面,信息完不完善即可
'''
for i in student:
if type(i) == list:
print(i)
if "height:165cm" in i: # 判断height是否在里面
print("输入了身高165CM")
if "height" in ''.join(i): # 判断height是否在里面
print("有输入height,试将列表转换为字符串后判断是否含有height字符串")
if "height" not in ''.join(i): # 判断height是否在里面
print("未输入height,试将列表转换为字符串后判断是否含有height字符串")
for a in i:
print(a)
# print(student)
Python list 常用操作
1.list 定义
实例
li = ["a", "b", "mpilgrim", "z", "example"]
li
['a', 'b', 'mpilgrim', 'z', 'example']
li[1]
'b'
2.list 负数索引
实例
li
['a', 'b', 'mpilgrim', 'z', 'example']
li[-1]
'example'
li[-3]
'mpilgrim'
li
['a', 'b', 'mpilgrim', 'z', 'example']
li[1:3]
['b', 'mpilgrim']
li[1:-1]
['b', 'mpilgrim', 'z']
li[0:3]
['a', 'b', 'mpilgrim']
3.list 增加元素
实例
li
['a', 'b', 'mpilgrim', 'z', 'example']
li.append("new")
li
['a', 'b', 'mpilgrim', 'z', 'example', 'new']
li.insert(2, "new")
li
['a', 'b', 'new', 'mpilgrim', 'z', 'example', 'new']
li.extend(["two", "elements"])
li
['a', 'b', 'new', 'mpilgrim', 'z', 'example', 'new', 'two', 'elements']
4.list 搜索
实例
li
['a', 'b', 'new', 'mpilgrim', 'z', 'example', 'new', 'two', 'elements']
li.index("example")
5
li.index("new")
2
li.index("c")
Traceback (innermost last):
File "", line 1, in ?
ValueError: list.index(x): x not in list
"c" in li
False
5.list 删除元素
实例
li
['a', 'b', 'new', 'mpilgrim', 'z', 'example', 'new', 'two', 'elements']
li.remove("z")
li
['a', 'b', 'new', 'mpilgrim', 'example', 'new', 'two', 'elements']
li.remove("new") # 删除首次出现的一个值
li
['a', 'b', 'mpilgrim', 'example', 'new', 'two', 'elements'] # 第二个 'new' 未删除
li.remove("c") #list 中没有找到值, Python 会引发一个异常
Traceback (innermost last):
File "", line 1, in ?
ValueError: list.remove(x): x not in list
li.pop() # pop 会做两件事: 删除 list 的最后一个元素, 然后返回删除元素的值。
'elements'
li
['a', 'b', 'mpilgrim', 'example', 'new', 'two']
6.list 运算符
实例
li = ['a', 'b', 'mpilgrim']
li = li + ['example', 'new']
li
['a', 'b', 'mpilgrim', 'example', 'new']
li += ['two']
li
['a', 'b', 'mpilgrim', 'example', 'new', 'two']
li = [1, 2] * 3
li
[1, 2, 1, 2, 1, 2]
7.使用join链接list成为字符串
实例
params = {"server":"mpilgrim", "database":"master", "uid":"sa", "pwd":"secret"}
["%s=%s" % (k, v) for k, v in params.items()]
['server=mpilgrim', 'uid=sa', 'database=master', 'pwd=secret']
";".join(["%s=%s" % (k, v) for k, v in params.items()])
'server=mpilgrim;uid=sa;database=master;pwd=secret'
join 只能用于元素是字符串的 list; 它不进行任何的类型强制转换。连接一个存在一个或多个非字符串元素的 list 将引发一个异常。
8.list 分割字符串
实例
li = ['server=mpilgrim', 'uid=sa', 'database=master', 'pwd=secret']
s = ";".join(li)
s
'server=mpilgrim;uid=sa;database=master;pwd=secret'
s.split(";")
['server=mpilgrim', 'uid=sa', 'database=master', 'pwd=secret']
s.split(";", 1)
['server=mpilgrim', 'uid=sa;database=master;pwd=secret']
split 与 join 正好相反, 它将一个字符串分割成多元素 list。
注意, 分隔符 (";") 被完全去掉了, 它没有在返回的 list 中的任意元素中出现。
split 接受一个可选的第二个参数, 它是要分割的次数。
9.list 的映射解析
实例
li = [1, 9, 8, 4]
[elem*2 for elem in li]
[2, 18, 16, 8]
li
[1, 9, 8, 4]
li = [elem*2 for elem in li]
li
[2, 18, 16, 8]
10.dictionary 中的解析
实例
params = {"server":"mpilgrim", "database":"master", "uid":"sa", "pwd":"secret"}
params.keys()
dict_keys(['server', 'database', 'uid', 'pwd'])
params.values()
dict_values(['mpilgrim', 'master', 'sa', 'secret'])
params.items()
dict_items([('server', 'mpilgrim'), ('database', 'master'), ('uid', 'sa'), ('pwd', 'secret')])
[k for k, v in params.items()]
['server', 'database', 'uid', 'pwd']
[v for k, v in params.items()]
['mpilgrim', 'master', 'sa', 'secret']
["%s=%s" % (k, v) for k, v in params.items()]
['server=mpilgrim', 'database=master', 'uid=sa', 'pwd=secret']
11.list 过滤
实例
li = ["a", "mpilgrim", "foo", "b", "c", "b", "d", "d"]
[elem for elem in li if len(elem) > 1]
['mpilgrim', 'foo']
[elem for elem in li if elem != "b"]
['a', 'mpilgrim', 'foo', 'c', 'd', 'd']
[elem for elem in li if li.count(elem) == 1]
['a', 'mpilgrim', 'foo', 'c']