检查列表列表的第一个元素

Mat*_*NNZ 1 python list

我有一个如下所示的列表:

List = [['name1','surname1'], ['name2','surname2'],['name3','surname3']]
Run Code Online (Sandbox Code Playgroud)

我想检查"name1"是否在对象"List"中.我试过了:

if 'name1' in List:
    print True
else:
    print False
Run Code Online (Sandbox Code Playgroud)

输出为'False'.知道如何创建一个子列表(或类似的东西)来检查每个子列表的第一个元素而不循环遍历主列表的所有元素?

可能的解决方案

我想到的是:

for i in range(0, len(List)):
    if List[i][0] == 'name1':
        print True
Run Code Online (Sandbox Code Playgroud)

但是如果可能的话,我希望尽可能避免使用更优化的迭代.

Ash*_*ary 6

您可以使用生成器表达式:

>>> 'name1' in (x[0] for x in List)
True
Run Code Online (Sandbox Code Playgroud)

这将'name1'在找到后立即短路,并且不会在内存中创建任何不必要的列表.

相关:列表理解与生成器表达式的奇怪时间结果?