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

1 投票
1 回答
2960 浏览
提问于 2025-04-17 18:42

在Python中,我有一个叫“list1”的列表,这个列表里面包含了长度不一的子列表。

我想把第二个列表“add”添加到这个长列表中,前提是“add”的第一个元素不能和“list1”中任何子列表的第一个元素相同。

这段代码可以实现这个功能:

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”被添加到了“list1”中,而“add2”则不会被添加。

不过,我在想有没有更优雅、更有效的方法来实现这个功能,而不需要创建一个临时的列表。

1 个回答

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] 是否已经存在。

撰写回答