Я работаю над Project Euler # 35, и мне нужно найти круговые перестановки числа. Используя itertools
, я легко могу получить перестановки числа. Тем не менее, я хочу сделать это с пониманием списка (поскольку это кажется более Pythonic, я также пытаюсь ознакомиться со списком).
Я обнаружил, что все круговые простые числа могут содержать только цифры 1, 3, 7 и 9 (это исключает 2 и 5, которые по определению являются круговыми числами). Если какая-либо другая цифра была в числе (0, 2, 4, 5, 6 или 8), одна из перестановок не была бы простой (так как эта цифра была бы последней, по крайней мере, в одной из перестановок).
Таким образом, я попытался сделать это:
from itertools import permutations
l = [x for x in list(permutations('1397', y)) for y in range(7)]
Мне нужно было использовать y for y in range(7)
, чтобы получить переменные длины перестановок.
Однако это дало мне TypeError
:
Traceback (most recent call last):
File "<pyshell#23>", line 1, in <module>
l = [x for x in list(permutations('1397', y)) for y in range(7)]
TypeError: an integer is required
Это работает, но не использует две переменные в одном понимании списка:
l = []
for y in range(7):
l.append([x for x in list(permutations('1379', y))])
Как я могу выполнить понимание списка с двумя переменными? Спасибо!