Python слишком много раз печатает список - PullRequest
0 голосов
/ 19 марта 2019

Как я могу заставить python распечатать только одну копию списка нелегальных государств?Кажется, он перечисляется слишком долго, когда все, что мне нужно, это одна копия.

import itertools
import copy

BOAT = "B"


def illegalStates(roles):



    allstates = []
    legalstates = []
    illegalstates = []
    husbands = []
    wifes = []
    sisalto = []
    persons = copy.deepcopy(roles)
    persons.remove(BOAT)
    for i in range(1, len(persons)+1):
        els = [list(x) for x in itertools.combinations(persons, i)]
        allstates.extend(els)
    allstates.append([])

    for state in allstates:
        husbands.append([])
        wifes.append([])
        for henkilo in state:
            if henkilo == "H1":
                husbands[len(sisalto)-1].append(1)
            elif henkilo == "H2":
                husbands[len(sisalto)-1].append(2)
            elif henkilo == "H3":
                husbands[len(sisalto)-1].append(3)
            elif henkilo == "W1":
                wifes[len(sisalto)-1].append(1)
            elif henkilo == "W2":
                wifes[len(sisalto)-1].append(2)
            elif henkilo == "W3":
                wifes[len(sisalto)-1].append(3)
    for i in range(0, len(husbands)):
        if len(husbands[i]) == 0 or len(wifes[i]) == 0:
            legalstates.append(allstates[i])
    print(*legalstates)

    #--------------------------------
    return illegalstates


    if __name__ == "__main__":
        main()

Вот весь код, на случай, если это какая-то другая часть кода, которая продолжает делать это.Кроме того, когда этот список печатается, он не печатает пустые слоты.Может ли это быть напечатано как-то?

1 Ответ

0 голосов
/ 19 марта 2019

Ваш цикл, который начинается while len(openlist) > 0:, содержит вызов legalstates(), который содержит вызов illegalstates(), который содержит ваш оператор печати. Поэтому вы вызываете метод, содержащий print, каждый раз, когда ваш while loop ... loops

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...