![](/img/trans.png)
[英]How to compare elements in lists and check if first list element contains in another list's element using python
[英]Check first elements of a list of lists
我有一个看起来像这样的清单:
List = [['name1','surname1'], ['name2','surname2'],['name3','surname3']]
我想检查“ name1”是否在对象“列表”中。 我努力了:
if 'name1' in List:
print True
else:
print False
并且输出为“ False”。 任何想法如何创建一个子列表(或类似的东西)来检查每个子列表的第一个元素,而不循环遍历主列表的所有元素?
可能的解决方案
我想到的是:
for i in range(0, len(List)):
if List[i][0] == 'name1':
print True
但我想尽可能避免使用更优化的方法来进行此迭代。
您可以使用生成器表达式:
>>> 'name1' in (x[0] for x in List)
True
一旦找到'name1'
,它将短路,并且不会在内存中创建任何不必要的列表。
我建议使用字典,在这里看起来更合适。
但是,如果要使用列表列表,则可以使用这样的代码: 'name1' in [list[0] for list in List]
您可以执行以下操作:
if 'name1' in [l[0] for l in List]:
您还可以在列表理解的末尾添加if l
,以防万一周围有一个空列表:
if 'name1' in [l[0] for l in List if l]: # safe if there's an empty list
更为惯用的方法是使用any
功能
>>> any('name1' == current_list[0] for current_list in my_list)
True
这也会在第一次出现name1
使之短路。
编辑:如果您的name1
可以在子列表中的任何位置,则可以使用in
运算符
>>> any('name1' in current_list for current_list in my_list)
True
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.