我有下面的代码的更Python的方式:迭代一个清单,但一个元素每次迭代
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++ - ish,有没有更好的解决方案? (我不想在变量中保存所有可能的列表)
编辑:我没有说明这一点,但列表大小不一定是3.它可以是任何大小。
编辑2:似乎还有另一个误解:如果我有一个N的列表,那么我想要N个大小为N-1的列表,每个列表都缺少原始列表中的一个元素。
EDIT 3:具有4项列表,应该给该结果:
- 1,2,3
- 1,3,4
- 1,2,4
- 2, 3,4
我预测你会得到一打的答案,这样,'itertools答案'和发生器的理解将被调用,但最终没有比你的初始代码更好的建议。 – 2010-01-11 14:22:33
那么,他可以使用'xrange(len(items))'。 – Tobu 2010-01-11 14:27:23
那么,他已经在使用Python 3 :) – 2010-01-11 14:40:14