Python:有效地比较列表的第一个元素

时间:2013-03-11 15:15:43

标签: python list compare append

在Python中,我有一个名为“list1”的列表,其中包含可变长度列表。

如果add的第一个元素不是list1中任何列表的第一个元素,我想在该长列表中添加第二个列表“add”。

此代码有效:

list1 = [["a", 5, 9, 22], ["b", 10, 1], ["c"], ["d", 42]]

add = ["e", 1, 31]
add2 = ["b", 1, 31]

temp = []
for e in list1:
    temp.append(e[0])

if add[0] not in temp:
    list1.append(add)

正如所料,添加ist已添加到list1,而add2将不会添加。

但是,我想知道是否有更优雅有效的方法可以避免创建临时列表。

1 个答案:

答案 0 :(得分:1)

您可以使用all()和生成器表达式进行测试:

if any(add[0] != elem[0] for elem in list1):
    list1.append(add)

all()函数循环包含的生成器表达式测试,它将包含True个值,但如果它遇到Falseadd[0],则会停止等于elem[0])。这样就不必循环遍历list1所有,以确定elem[0]是否已经存在。