我想知道如何创建一个if语句,只要列表中至少有一个满足if语句要求的值,该if语句就会对列表起作用。
例如,给定一个列表
x=[1,2,3,4,5,6,7,8,9]
y=[1,2,3,4]
z=[1,2,3,8]
我想创建一个if语句,如果该列表包含值在5到10之间的元素,则该列表将追加***。
意思是,在if语句之后,结果将是
x=[1,2,3,4,5,6,7,8,9,***]
y=[1,2,3,4]
z=[1,2,3,8,***]
由于x和z都包含5到10之间的元素,因此它们会收到***。
答案 0 :(得分:4)
您可以这样做。使用生成器表达式和any()
函数测试是否有任何元素符合您的条件。
x = [1,2,3,4] #two lists for testing
y = [5]
if any(5 <= i <= 10 for i in x):
x.append("***")
if any(5 <= i <= 10 for i in y):
y.append("***")
print(x,y)
输出:
[1, 2, 3, 4] [5, '***']
答案 1 :(得分:2)
Python 3中最简洁的方法是使用生成器表达式:
if any(5 < x < 10 for x in lst):
lst.append('***')
这里是工作中的example。
编辑:感谢您的编辑和评论,这种语法令人不寒而栗。
答案 2 :(得分:-1)
i=0
while i<len(x):
if x[i]>5 and x[i]<10: #if any item of list is between 5 and 10 break loop
break
i+=1
if i<len(x): #check if i less than len(x) this means that loop 'broken' until the end
x.append('***')