我有一个像下面如何确定2维列表是否包含值?
mylist = [('value1', 'value2', 'value3'), ('secval1', 'secval2', 'secval3')]
我怎么看,如果列表中包含“值”的列表吗?
我有一个像下面如何确定2维列表是否包含值?
mylist = [('value1', 'value2', 'value3'), ('secval1', 'secval2', 'secval3')]
我怎么看,如果列表中包含“值”的列表吗?
你可以简单地检查所有子列表与any
:
any('value2' in subl for subl in mylist)
类似any()
,也支持短路的解决方案:
>>> 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']
'any'已经发生短路。通过创建一个定义'__nonzero__'的类来测试它,在其中放置一个'print'语句,并将它用作任意参数的第二个值(当第一个值为'True'时)。 'print'语句不会被执行。 –
@poorsod我知道,这就是为什么我说'“类似于任何()”'。 :) –
哦,我误解了 - 认为你建议替换使用短路的“任何”。 –
'value2' in (item for sublist in mylist for item in sublist)
如果你想看到的二维表中的值的指标,我用这样的回答:https://stackoverflow.com/a/6518412/1799272 – Oli4