gpt4 book ai didi

python - 唯一的列表列表

转载 作者:行者123 更新时间:2023-12-01 07:09:37 26 4
gpt4 key购买 nike

我有一个嵌套列表作为示例:

lst_a = [[1,2,3,5], [1,2,3,7], [1,2,3,9], [1,2,6,8]]

我正在尝试检查嵌套列表元素的前 3 个索引是否与其他元素相同。

如果 [1,2,3] 存在于其他列表中,则删除包含该元素的所有其他嵌套列表元素。这样嵌套列表是唯一的。

我不确定最Pythonic的方法是什么。

for i in range(0, len(lst_a)):
if lst[i][:3] == lst[i-1][:3]:
lst[i].pop()

期望的输出:

lst_a = [[1,2,3,9], [1,2,6,8]]

最佳答案

如果,正如您在评论中所说,具有相同前三个元素的子列表始终彼此相邻(但列表不一定已排序),您可以使用 itertools.groupby 对它们进行分组元素,然后从每个组中获取下一个

>>> from itertools import groupby
>>> lst_a = [[1,2,3,5], [1,2,3,7], [1,2,3,9], [1,2,6,8]]
>>> [next(g) for k, g in groupby(lst_a, key=lambda x: x[:3])]
[[1, 2, 3, 5], [1, 2, 6, 8]]

或者使用带有 enumerate 的列表理解,并将当前元素与最后一个元素进行比较:

>>> [x for i, x in enumerate(lst_a) if i == 0 or lst_a[i-1][:3] != x[:3]]
[[1, 2, 3, 5], [1, 2, 6, 8]]

这不需要任何导入,但恕我直言,当使用groupby时,代码应该做什么会更清楚。但请注意,与您的方法不同,这两种方法都会创建一个新的过滤列表,而不是从原始列表中更新/删除。

关于python - 唯一的列表列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58283966/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com