检查元组列表中是否存在字符串

时间:2012-02-16 21:20:24

标签: python

如果我有:

my_list = (('foo', 'bar'), ('floo', 'blar'))

如何轻松测试某些字符串是否位于任何元组的第一个元素中?

类似的东西:

if 'foo' in my_list

我们只是检查列表中每个元组的第一个元素?

5 个答案:

答案 0 :(得分:3)

如果您只想检查每个元组中的第一项:

if 'foo' in (item[0] for item in my_list)

可替换地:

if any('foo' == item[0] for item in my_list)

答案 1 :(得分:3)

首先,my_list是一个元组,而不是列表。

>>> my_list = (('foo', 'bar'), ('floo', 'blar'))
>>> 'foo' in zip(*my_list)[0]
True

如果您愿意,也可以使用itertools

>>> from itertools import izip
>>> 'foo' in next(izip(*my_list))
True

答案 2 :(得分:1)

使用电池:

if 'foo' in itertools.imap(operator.itemgetter(0), my_list):

这不会创建元组的副本(它实际上是一个元组,而不是列表),应该是最快的。

答案 3 :(得分:0)

if 'foo' in map(lambda x: x[0], my_list):
    <do something>

map获取列表中的每个元素,向其应用函数,并返回结果列表。在这种情况下,函数是一个lambda函数,它只返回原始元素的第一个子元素。

((0,1),(3,4))变为(0,3)

答案 4 :(得分:0)

my_list = iter(my_list)

result = False

while True:
    try:
        x, y = my_list.next()
        if x == 'foo':
            result = True
            break
    except StopIteration:
        break
相关问题