标题为: 如果列表中的所有9个字符串都被替换,则应该运行任务。
以下是代码:
list = [
['0', '0', '0'],
['0', '0', '0'],
['0', '0', '0']
]
如果所有这些都被" 1"或" 2"哪个被什么取代并不重要。然后它应该运行一个任务。
那么,如果所有9个点都被" 1"或" 2"?
将所有组合向下编写的可能性太多,并将它们与列表进行比较。
答案 0 :(得分:2)
这个怎么样,
s = set(item for sublist in lists for item in sublist) # flat a list of lists into a set
if '0' not in s:
do_something()
答案 1 :(得分:1)
您可以使用set()
和itertools.chain()
函数来实现它:
from itertools import chain
set(chain(*my_list)).issubset('12')
# ^ ^ ^ all items in set are either '1' or '2'
# ^ ^ creates a single list comprising the sub-list
# ^ uniques values in the chained list
其中my_list
是您的嵌套列表。
注意:不要将list
用作变量类型,因为list
是内置关键字,表示Python中的list
数据类型。
示例运行:
# Sample function
>>> def check_list(my_list):
... return set(chain(*my_list)).issubset('12')
...
# Test Run:
>>> check_list([['0', '0'], ['0', '0']])
False
>>> check_list([['0', '1'], ['0', '0']])
False
>>> check_list([['1', '1'], ['1', '1']])
True
>>> check_list([['1', '2'], ['1', '2']])
True
答案 2 :(得分:0)
永远不要将变量命名为保留字,即list
。但这是一个简单的方法。
l = [
['0', '0', '0'],
['0', '0', '0'],
['0', '0', '0']
]
if all(all(int(x) for x in row) for row in l):
#do something
答案 3 :(得分:0)
要检查它们是否已被'1'
或'2'
替换,而不是其他
all(all(i in ('1', '2') for i in sublist) for sublist in list)
答案 4 :(得分:0)
我看到您的问题是如何查看所有子列表是否仅包含'1'
和'2'
?
>>> mylist = [list('121'),list('111'), list('222')]
>>> mylist
[['1', '2', '1'], ['1', '1', '1'], ['2', '2', '2']]
>>> all(item in ('1', '2') for sublist in mylist for item in sublist)
True
>>> mylist[0][0] = '0'
>>> mylist
[['0', '2', '1'], ['1', '1', '1'], ['2', '2', '2']]
>>> all(item in ('1', '2') for sublist in mylist for item in sublist)
False