Быстрее / умнее петли [Python]
Файл данных представляет собой список Excel с 4 столбцами: имя, позиция, значение и цена. Файл импортирован с пандами.
Есть 5 разных позиций.
Я пытаюсь сопоставить все возможные варианты, где это может быть только один с каждой позиции + один случайный игрок, который еще не был выбран.
def teams(x):
positions = list(data.Position.unique())
indices = []
for position in positions:
indices.append((data.Position == position).nonzero()[0])
positions.append('Random')
indices.append(data.index)
for i in indices[0]:
for i2 in indices[1]:
for i3 in indices[2]:
for i4 in indices[3]:
for i5 in indices[4]:
for i6 in indices[5]:
if i6 != i:
if i6 != i2:
if i6 != i3:
if i6 != i4:
if i6 != i5:
print i, i2, i3, i4, i5, i6
teams(data)
Моя проблема в том, что мои петли слишком медленные, и я не могу получить if
заявление на работу, поэтому я должен сделать 5 разных if
с, что я считаю довольно глупым решением.
Мой вопрос: как я могу сделать свои петли быстрее / умнее и как мне исправить мои if
заявление
1 ответ
Вы можете сократить свой код до трех строк, если вы используете itertools.product()
вот так
from itertools import product
for i in list(product(*indices)):
if i[5] not in i[:5]:
print i[0], i[1], i[2], i[3], i[4], i[5]
product()
эквивалентно вложенному циклу