1

在 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)

正如预期的那样,将 add ist 添加到 list1 而不会添加 add2。

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

4

1 回答 1

1

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

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

all()函数遍历包含的生成器表达式测试它只会包含True值,但如果遇到 a False(其中add[0]等于elem[0])将停止。这样就不必遍历所有list1找出是否elem[0]已经存在。

于 2013-03-11T15:18:22.020 回答