Преобразование понимания списка в простой цикл for - PullRequest
0 голосов
/ 03 марта 2019

У меня есть понимание списка, которое возвращает список всех возможных перестановок, учитывая тот факт, что входные данные содержат все уникальные числа.

nums = [1,2,3]
ans = [[]]
for x in nums:
    ans = [items + [n] for items in ans for n in nums if (n not in items)]
print(ans)

> [[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]

Я попытался написать цикл для этого все следующее:

nums = [1, 2, 3]
ans = [[]]

for x in nums:
    for items in ans:
        for n in nums:
            if n not in items:
                items.append(n)
print(ans)

Однако это не дает мне требуемого вывода.Кто-нибудь может мне помочь с этим?

1 Ответ

0 голосов
/ 03 марта 2019
[items + [n] for items in ans for n in nums if (n not in items)]

Давайте разберем это, перейдя справа налево.

for items in ans:
    for n in nums:
        if n not in items:

Затем вы просто создаете список и добавляете в него эти items + [n]

result = []
for items in ans:
    for n in nums:
        if n not in items:
            result.append(items + [n])

Теперьвсе это выполняется из другого цикла for x in nums.Итак, у вас есть:

nums = [1,2,3]
ans = [[]]

for x in nums:
    result = []
    for items in ans:
        for n in nums:
            if n not in items:
                result.append(items + [n])
    ans = result
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...