今天遇到的问题.需要在判断一个关键词里找出相应的关键字.
我第一次用的方法:
def func(str_1):
abc = None
if ('xx' or 'xx' or "xxx") in str(str_1):
abc = "xxxx_1"
elif ('xx' or 'xx' or "xxx") in str(str_1):
abc = "xxxx_2"
return abc
发现有问题,但是我没能解决,有些地方会判断出错
我赶紧就换了个想法.
那就用列表加判断的形式来解决吧.
方法二:
def func_1(str_1):
abc = None
list_a = ['xxx', 'xxx', 'xxx', 'xxx', 'xxx', 'xxx'] #关键字列表
list_b = ['xxx', 'xxx', 'xxx', 'xxx', 'xxx', 'xxx'] #关键字列表
for item in list_a:
if item in str_1:
abc = "xxxx_1"
for item_1 in list_b:
if item_1 in str_1:
abc = "xxxx_2"
return abc
发现不好看,测试了下还凑合能用,显得很笨重.
列表推导式上场了.
方法三:
def func_2(str_1):
word = None
if [x for x in ["xxx", "xxx", "xxx", "xx"] if x in str(str_1)]:
word = "123"
elif [x for x in ["xx", "xxx"] if x in str(str_1)]:
word = "456"
return word
在这里解释一下列表推导式
加if
的联动.
单纯的一个列表推导式格式如下.
[x for x in list_a]
# x 列表里的元素
# list_a 可迭代对象.这里指的列表.
#------------------------
#[元素 for 元素 in 列表]
列表推导式和if关联.
[x for x in list_a if x in str("xxxx")]
# x 列表里的元素
# list_a 可迭代对象.这里指的列表.
# if 判断体 判断条件自定义
#------------------------
#[元素 for 元素 in 列表 if 判断条件]
我这个是简单的列表推导式 当然列表推导式也是可以迭代的.(这部分为转载
)
>>>[x for x in range(10)] #利用range(10)生成一个新的列表,[0,1,2,3,4,5,6,7,8,9]
>>>[x for x in range(10) if x%3==0] #利用range(10)和if条件(能整除3的)生成一个新列表,[0,3,6,9]
>>>[[x,y] for x in range(2) for y in range(2)] #x,y利用range(2)生成各自元素进行组合,[[0,0],[0,1],[1,0],[1,1]]