gpt4 book ai didi

python - Python中两个列表的有序交集

转载 作者:太空狗 更新时间:2023-10-29 19:34:10 24 4
gpt4 key购买 nike

我知道在 Python 中,如果我有:

list_1 = [1,2,3]
list_2 = [2,3,4]

我可以执行以下操作来找到两者之间的交集:

list(set(list_1) & set(list_2))
# = [2,3]

但这种方法存在一个问题:集合不像列表那样保持秩序。所以如果我真的有:

list_1 = [3,2,1]
list_2 = [2,3,4]

我得到:

list(set(list_1) & set(list_2))
# = [2,3]

即使我更喜欢从第一个列表中获取顺序,即:

# = [3,2]

是否有另一种交集技术可以使生成的“交集”与第一个列表保持相同的顺序?

最佳答案

set_2 = frozenset(list_2)
intersection = [x for x in list_1 if x in set_2]

set 而不是 frozenset 也可以,我只是越来越习惯于在不打算改变数据的情况下使用不可变类。关键是要保持顺序,您需要按照您想要保持的顺序遍历列表,但您不希望使用简单方法的 n*m 复杂度:[x for x in list_1 if x在 list_2] 中。检查 set 或类似的基于哈希的类型的成员资格大致为 O(1),而列表成员资格的时间为 O(n)。

关于python - Python中两个列表的有序交集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23529001/

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