我的问题与How to check if all elements of a list matches a condition非常相似。 但我找不到在for循环中做同样事情的正确方法。 例如,在python中使用all就像:
>>> items = [[1, 2, 0], [1, 0, 1], [1, 2, 0]]
>>> all(item[2] == 0 for item in items)
False
但是当我想使用类似的方法检查for循环中的所有元素时,就像这样
>>> for item in items:
>>> if item[2] == 0:
>>> do sth
>>> elif all(item[1] != 0)
>>> do sth
" all"表达式不能在这里使用。是否有任何可能的方式像" elif all(item [2] == 0)"在这里使用。以及如何检查列表中的所有元素是否与for循环中的条件匹配?
答案 0 :(得分:2)
如果您想拥有if
和else
,仍然可以使用any
方法:
if any(item[2] == 0 for item in items):
print('There is an item with item[2] == 0')
else:
print('There is no item with item[2] == 0')
any
来自this answer。
答案 1 :(得分:1)
这里:
items = [[1, 2, 0], [1, 0, 1], [1, 2, 0]]
def check_list(items):
for item in items:
if item[2] != 0:
return False
return True
print(check_list(items))
如果你想让它更通用一点:
def my_all(enumerable, condition):
for item in enumerable:
if not condition(item):
return False
return True
print(my_all(items, lambda x: x[2]==0)
答案 2 :(得分:0)
试试这个: -
prinBool = True
for item in items:
if item[2] != 0:
prinBool = False
break
print prinBool
答案 3 :(得分:0)
您可以使用带有for
子句的else
循环:
for item in items:
if item[2] != 0:
print False
break
else:
print True
当序列的项目用尽时,即当循环未被else
终止时,执行break
之后的语句。
答案 4 :(得分:0)
使用functools
,会更容易:
from functools import reduce
items = [[1, 2, 0], [1, 0, 1], [1, 2, 0]]
f = lambda y,x : y and x[2] == 0
reduce(f,items)
答案 5 :(得分:-1)
你的意思是这样吗?
for item in items:
for x in range (0,3):
if item[x] == 0:
print "True"