在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将不会添加。
但是,我想知道是否有更优雅有效的方法可以避免创建临时列表。
答案 0 :(得分:1)
您可以使用all()
和生成器表达式进行测试:
if any(add[0] != elem[0] for elem in list1):
list1.append(add)
all()
函数循环包含的生成器表达式测试,它将包含True
个值,但如果它遇到False
(add[0]
,则会停止等于elem[0]
)。这样就不必循环遍历list1
的所有,以确定elem[0]
是否已经存在。