我有以下代码:
items = ["one", "two", "three"]
for i in range(0, len(items)):
for index, element in enumerate(items):
if index != i:
# do something with element
基本上我想排除每个元素一次并迭代其余的。因此,对于上面的列表,我想要以下迭代:
- “二三”
- “一”、“三”
- “一二”
我现在写的代码看起来有点C++风格,有更好的解决方案吗? (我不想将所有可能的列表保存在变量中)
编辑:我没有说明这一点,但列表大小不一定是 3。它可以是任何大小。
编辑2:似乎还有另一个误解:如果我有一个N列表,那么我想要N个大小为N-1的列表,每个列表都缺少原始列表中的一个元素。
编辑 3:包含 4 个项目的列表应给出以下结果:
- 1, 2, 3
- 1, 3, 4
- 1, 2, 4
- 2, 3, 4
虽然疯狂地投票,但我的第一个解决方案并不是OP想要的,即
N 个列表,每个列表恰好缺少 N 个原始元素之一:
>>> from itertools import combinations
>>> L = ["one", "two", "three", "four"]
>>> for R in combinations(L, len(L) - 1):
... print " and ".join(R)
...
one and two and three
one and two and four
one and three and four
two and three and four
See the 修订记录以下讨论的来源。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)