У меня есть следующий код:Более вещий способ переборе списка, исключая такой элемент каждой итерации
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, есть ли лучшее решение? (Я не хочу хранить все возможные списки в переменной)
EDIT: Я не указал это, но размер списков не обязательно 3. Он может быть любого размера.
EDIT 2: Кажется, есть другое недоразумение: если у меня есть список N, то я хочу N списков размера N-1, каждый из которых не содержит элемент из исходного списка.
РЕДАКТИРОВАТЬ 3: список с 4 пунктов, должны дать этот результат:
- 1, 2, 3
- 1, 3, 4
- 1, 2, 4
- 2, 3, 4
Я предсказываю, вы получите десяток ответов на это, 'itertools 'и вызовы генератора будут вызваны, но в итоге не будет предложен ничего лучшего, чем ваш исходный код. –
Нет, он мог бы использовать 'xrange (len (items))'. – Tobu
Нет, он уже использует Python 3 :) –