#python #for-loop #list-comprehension #permutation
#python #для цикла #понимание списка #перестановка
Вопрос:
У меня есть понимание списка, которое возвращает список всех возможных перестановок, учитывая тот факт, что входные данные содержат все уникальные числа.
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. Почему это отклонено?
2. Понятия не имею. Я не понимаю, почему люди делают это, даже не предлагая изменений.
Ответ №1:
[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