Сравнение между двумя списками строк не подходит - PullRequest
0 голосов
/ 30 марта 2019

Я пытаюсь поменять местами элементы в списке строк. Количество возможностей зависит от длины списка. Обмен останавливается, когда список возвращается к своей первоначальной форме. Я делаю копию этого списка, и в конце цикла while я создаю свое условие. проблема в том, что он не распечатывает все возможности, и когда я помещаю список в необработанном виде в условие, он работает отлично. У меня вопрос, почему последняя форма не работает? Это должно работать, потому что этот код является частью большего.

def swaps():
    alpha = ["aba","bbb", "bab"]
    beta = alpha 
    print(f"this is beta {beta}")
    print(alpha)
    while True:
        for a in range(0,len(alpha-1)):
            alpha[a],alpha[a+1]=alpha[a+1],alpha[a]
            print(alpha)
       # This form works: if alpha == ["aba","bbb","bab"]
        if alpha = beta:
            break

Ответы [ 2 ]

1 голос
/ 30 марта 2019

= - оператор присваивания.Вы, вероятно, хотели использовать ==, который является оператором проверки равенства:

if alpha == beta:
    break
1 голос
/ 30 марта 2019

Эта часть неверна, вы назначаете ссылку на тот же список (не копию) для значения бета:

 alpha = ["aba","bbb", "bab"]
    beta = alpha 

Просто измените на

 alpha = ["aba","bbb", "bab"]
    beta = list(alpha)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...