我有下面的代碼的更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