Хранение результата цикла for в массиве - PullRequest
0 голосов
/ 29 января 2019

Я пытаюсь сохранить результат вложенного цикла в списке в Python.Может кто-нибудь сказать мне, как это сделать?V - это массив, содержащий [1, 2, 3], а n - это длина = 3, а sq - матрица, содержащая перестановки.

Я пробовал много подходов, но всякий раз, когда я возвращаю результат, он дает мне только один элементиз списка.любая помощь будет оценена.Спасибо

def Permute1(sq,v,n):
        for i in range(n):
            for j in range(n):
                if (sq[i,j]==1):
                    temp=v[i]
                    v[i]=v[j]
                    v[j]=temp
                    print(v)



results: 
[1, 2, 3]
[2, 1, 3]
[3, 1, 2]
[3, 1, 2]
[3, 2, 1]
[3, 2, 1]

Ответы [ 3 ]

0 голосов
/ 29 января 2019

Чек yield.Вы можете использовать это для генерации всех перестановок, обработки каждой из них и сохранения их в списке.

0 голосов
/ 29 января 2019
def Permute1(sq,v,n):
    result=[]
    for i in range(n):
        for j in range(n):
            if (sq[i,j]==1):
                temp=v[i]
                v[i]=v[j]
                v[j]=temp
                result += [v]
    print(result)
    return result

Не проверено, но может помочь.

0 голосов
/ 29 января 2019

Я не уверен, что здесь полезность d = v.

Чтобы поменять местами два элемента в Python, я рекомендую:

v[i], v[j] = v[j], v[i]

Объявление пустого списка перед цикламии добавление значений (как сказал АкшайНеврекар) также может быть полезным, в зависимости от того, что вам нужно в результате.

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