Быстрее / умнее петли [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() эквивалентно вложенному циклу

Другие вопросы по тегам