我正在尝试使用itertools.permutations函数生成pandigital数字,但每当我这样做时,它会将它们生成为一个单独的数字列表,这不是我想要的。
例如:
for x in itertools.permutations("1234"):
print(x)
将产生:
('1', '2', '3', '4')
('1', '2', '4', '3')
('1', '3', '2', '4')
('1', '3', '4', '2')
('1', '4', '2', '3')
('1', '4', '3', '2'), etc.
而我希望它返回1234,1243,1324,1342,1423,1432等。我将如何以最佳方式进行此操作?
答案 0 :(得分:5)
您需要具有内置str.join()
功能的列表理解:
import itertools
a = [''.join(i) for i in itertools.permutations("1234") ]
print(a)
输出:
['1234', '1243', '1324', '1342', '1423', '1432', '2134', '2143', '2314', '2341', '2413', '2431', '3124', '3142', '3214', '3241', '3412', '3421', '4123', '4132', '4213', '4231', '4312', '4321']
答案 1 :(得分:3)
itertools.permutations
接受一个iterable并返回一个产生元组的迭代器。
使用join()
返回一个字符串,该字符串是可迭代迭代中字符串的串联
join()
DOCS,
itertools.permutations
DOCS
使用此:
import itertools
for x in itertools.permutations("1234"):
print (''.join(x))
<强>输出:强>
1234
1243
1324
1342
1423
1432
2134
2143
2314
2341
....
答案 2 :(得分:2)
请参阅itertools.permutations返回元组。 看加入功能:
In [1]: ''.join(('1','2','3'))
Out[1]: '123'
试试这个:
for x in itertools.permutations("1234"):
print ''.join(x)