python判断字符串是否包含在列表中的方法image.png

image.png

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方法
基本使用
= .join()
: 分隔符,为str类型,如','
: 需要进行合并的list对象,其中每个元素必须为str类型
: 返回一个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)

首先我们先定义一个列表,定义列表很简单,列表使用方括号表示,列表内的元素没有类型限制。

例如

123456789101112test_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 关键字 ) : 存在`

例如

1234567891011121314151617from 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

**

1 str = "string test string test" 2 find1 = "str" 3 find2 = "test" 4 print(find1 in str) # True 5 print(find1 not in str) # False

偷偷说一句:in不只是在字符串中可以使用哦!期待后面的教程叭

使用字符串对象的 find() 、 rfind() 、 index() 、 rindex()

**

1 str = "string test string test" 2 find1 = "str" 3 find2 = "test" 4 # find 5 print(str.find(find1))  # 0 6 print(str.find(find2))  # 7 7 8 # rfind 9 print(str.rfind(find1))  # 12 10 print(str.rfind(find2))  # 19 11 12 # index 13 print(str.index(find1))  # 0 14 print(str.index(find2))  # 7 15 16 # rindex 17 print(str.rindex(find1))  # 12 18 print(str.rindex(find2))  # 19 19 20 # count 21 print(str.count(find1))  # 2 22 print(str.count(find2))  # 2

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 常用操作

Document 对象参考手册 Python3 实例

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']

Document 对象参考手册 Python3 实例

Last modification:February 7, 2021
如果觉得我的文章对你有用,请随意赞赏