【发布时间】:2013-02-13 01:18:22
【问题描述】:
我一直在尝试在 python 中写下一个处理重复的列表交集算法。我是 python 和编程的新手,如果这听起来效率低下,请原谅我,但我想不出其他任何东西。这里,L1 和 L2 是有问题的两个列表,L 是交集。
- 遍历 L1
- 遍历 L2
- 如果元素在 L1 和 L2 中
- 将其添加到 L
- 从 L1 和 L2 中删除它
- 遍历L
- 将元素添加回 L1 和 L2
我 100% 确定这不是 Mathematica 中用于评估列表交集的算法,但我真的想不出更有效的方法。我不想在此过程中修改 L1 和 L2,因此我将交集添加回两个列表。有任何想法吗?我不想使用列表以外的任何内置函数/数据类型,所以没有导入集或类似的东西。就我而言,这是一个算法和实现练习,而不是编程练习。
【问题讨论】:
-
“注意重复”是什么意思?
-
“不使用内置”是什么意思?
list和set一样是内置的,list.__getitem__和set.intersection一样是内置的,等等。 -
@Blender 我的意思是我希望 intersection([1,1,2],[1,2,2]) 返回 [1,2] 而不是 [1,1,2],如果我不从每个列表中删除元素,它会返回。
-
@abarnert 我的意思是我不想使用 python 中的
set类,并且只使用列表来实现。我知道list是内置的,但它只是实现此算法的数据结构。 -
"我想用集合做集合操作"...
标签: python