在列表中,用于检查tup中的一项

2024-06-23 20:00:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含元组的列表,我想检查元组中的第一个值是否包含特定的值。你知道吗

这是我目前的解决方案:

cities = [("Hamburg", "Germany"), ("London", "England"), ("Paris", "France")]
for city in cities:
    if city[0] == "Hamburg":
        contains_Hamburg = True
        break
else:
    contains_Hamburg = False

如果城市不储存国家,这看起来是这样的:

cities_simple = ["Hamburg", "London", "Paris"]
contains_Hamburg = "Hamburg" in cities_simple

有没有一种方法可以混合使用in操作符?例如,我可以这样做:

contains_Hamburg = "Hamburg" in [city[0] for city in cities]

但是这会创建第二个列表,所以我很犹豫是否使用它(如果python没有真正创建第二个列表的话,我想就可以了)。你知道吗


Tags: incity列表for解决方案simple元组london
2条回答

你很接近!^{}可用于检查任何元素是否为True。通过使用generator expression而不是列表理解,您可以避免额外的列表混乱的内存。你知道吗

contains_Hamburg = any('Hamburg' in c for c, s in cities)

您也可以使用==而不是in,如下所示。你知道吗

contains_Hamburg = any('Hamburg' == c for c, s in cities)

如果您的城市列表将是元组和字符串的组合,如:

cities = [("Hamburg", "Germany"), ("London", "England"), ("Paris", "France"), "Toronto", "Montreal", "New York"]

可以使用lambda函数将其解包:

city = lambda c: c if type(c) == str else c[0]

在发电机中使用:

print( 'New York' in (city(c) for c in cities) )
print( 'Paris' in (city(c) for c in cities) )

如果你要在很多城市使用这个函数,那么创建一个函数是值得的

contains_city = lambda ct: ct in (city(c) for c in cities)

print (contains_city("Moscow")) 
print (contains_city("Toronto")) 

相关问题 更多 >

    热门问题