Python 如何确定二维列表是否包含值?
我有如下清单Python 如何确定二维列表是否包含值?,python,list,python-2.7,Python,List,Python 2.7,我有如下清单 mylist = [('value1', 'value2', 'value3'), ('secval1', 'secval2', 'secval3')] 如何查看列表是否包含“value2”?您只需使用以下内容检查所有子列表: 使用: 类似于any(),该解决方案还支持短路: >>> from itertools import chain >>> mylist = [('value1', 'value2', 'value3'), ('secva
mylist = [('value1', 'value2', 'value3'), ('secval1', 'secval2', 'secval3')]
如何查看列表是否包含“value2”?您只需使用以下内容检查所有子列表: 使用: 类似于
any()
,该解决方案还支持短路:
>>> from itertools import chain
>>> mylist = [('value1', 'value2', 'value3'), ('secval1', 'secval2', 'secval3')]
>>> 'value2' in chain(*mylist)
True
证明它像any()一样短路。
:
任何
都已短路。通过创建一个定义\uuu非零\uuuu
的类来测试它,将print
语句放入其中,并将其用作any
参数中的第二个值(当第一个值为True
时)。print
语句将不会执行。@poorsod我知道,这就是为什么我说“类似于any()”
:)哦,我误解了-我以为你是在建议更换使用短路的任何。谢谢,我很好奇是否有办法获得匹配的物品?要获得包含你要寻找的价值的物品,当列表中存在'value2'
时,应使用常规for
循环并返回或中断。如果要查找所有匹配项,可以使用[如果子列表中的'value2'为mylist中的子列表,则使用子列表为mylist中的子列表]
。如果要查看二维列表中的值索引,我使用以下答案:
any('value2' in sublist for sublist in mylist)
>>> from itertools import chain
>>> mylist = [('value1', 'value2', 'value3'), ('secval1', 'secval2', 'secval3')]
>>> 'value2' in chain(*mylist)
True
>>> it=chain(*mylist)
>>> 'value2' in it
True
>>> list(it) #part of iterable still not traversed
['value3', 'secval1', 'secval2', 'secval3']
'value2' in (item for sublist in mylist for item in sublist)