Tengo el siguiente código:Una forma más de Pythonic se repite una lista mientras se excluye un elemento cada iteración
items = ["one", "two", "three"]
for i in range(0, len(items)):
for index, element in enumerate(items):
if index != i:
# do something with element
Básicamente quiero excluir todos los elementos de una vez y repetir el resto. Así que para la lista que tengo encima, me gustaría que las siguientes iteraciones:
- "dos", "tres"
- "uno", "tres"
- "uno", "dos"
El código que he escrito ahora parece un poco C++ - ish, ¿hay una solución mejor? (No quiero mantener todas las listas posibles en una variable)
EDITAR: No dije esto pero el tamaño de las listas no es necesariamente 3. Puede ser de cualquier tamaño.
EDIT 2: Parece que hay otro malentendido: si tengo una lista de N, entonces quiero N listas de tamaño N-1, cada una falta un elemento de la lista original.
EDITAR 3: Una lista con 4 elementos, debe dar a este resultado:
- 1, 2, 3
- 1, 3, 4
- 1, 2, 4
- 2, 3, 4
Predigo obtendrá una docena de respuestas a este, 'itertools 'y se invocarán las comprensiones del generador, pero al final no se propondrá nada mejor que su código inicial. –
Nah, podría haber usado 'xrange (len (items))'. – Tobu
Nah, él ya está usando Python 3 :) –