Python Itertools.Permutations()
Почему itertools.permutations() возвращает список символов или цифр для каждой перестановки вместо того, чтобы просто возвращать строку?
Например:
>>> print([x for x in itertools.permutations('1234')])
>>> [('1', '2', '3', '4'), ('1', '2', '4', '3'), ('1', '3', '2', '4') ... ]
Почему он не возвращает это?
>>> ['1234', '1243', '1324' ... ]
Ответы
Ответ 1
itertools.permutations()
просто работает таким образом. Он принимает произвольный итеративный аргумент и всегда возвращает итератор, получая кортежи. Он не имеет (и не должен) специальных строк. Чтобы получить список строк, вы всегда можете присоединиться к кортежам самостоятельно:
list(map("".join, itertools.permutations('1234')))
Ответ 2
Поскольку он ожидает итерабельности в качестве параметра и не знает, это строка. Параметр описан в документах.
http://docs.python.org/library/itertools.html#itertools.permutations
Ответ 3
Я не пробовал, но, скорее всего, должен работать
comb = itertools.permutations("1234",4)
for x in comb:
''.join(x)
Ответ 4
Пермутация может быть выполнена для строк и списка также, ниже приведен пример.
x = [1,2,3]
если вам нужно сделать перестановку в указанном выше списке
print(list(itertools.permutations(x, 2)))
# the above code will give the below..
# [(1,2),(1,3),(2,1)(2,3),(3,1),(3,2)]