gpt4 book ai didi

python - 如何在 Python 中选择两个列表的交集中的元素

转载 作者:太空狗 更新时间:2023-10-29 23:58:41 25 4
gpt4 key购买 nike

举个简单的例子:

list1 = ['a', 'b', 'c']
list2 = ['a', 'stack', 'overflow']
for i in list1 and list2:
print i

这将打印 list2 中的所有元素。为什么是这样?我怎样才能只打印两个列表中的元素?

最佳答案

如果您的列表可能很大,最好将它们转换为集合并对其使用交集:

list1 = ['a', 'b', 'c']
list2 = ['a', 'stack', 'overflow']

for i in set(list1).intersection(set(list2)):
print i

如果您想重复迭代该交叉点,请将其保存在自己的变量中(intersect = set(list1).intersection(set(list2)))。

您还可以使用:

for i in list 1:
if i in list2:
print i

但是在列表中使用 in 来检查成员资格的问题是它可能是一个 O(n) 操作,所以总的来说,你的循环变成了 O(n ^2). OTOH,在 set 上使用 in 作为成员资格是 O(1),所以速度要快得多。

至于你原来的问题,当你做for i in list1 and list2时,它被解释为for i in (list1 and list2),而值如果 list1 不为空,list1 和 list2 就是 list2,因此您最终只会迭代第二个列表。

关于python - 如何在 Python 中选择两个列表的交集中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29453516/

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