我想打印以下列表[1,2,3,4]的所有长度为1-4的排列
我知道我可以设置一个for循环并将for循环索引作为参数传入,但我试图让以下代码正常工作:
import itertools
nums = [1,2,3,4]
perms = itertools.permutations(nums,range(1,4))
print(list(perms))希望参数range(1,4)能够在字符串长度为1、2、3和4的情况下运行数字(intertools.permutations)。
如果可以使用itertools符号来实现这一点,您有什么想法吗?
是否还可以将长度=1的大小写打印为:(1), (2), (3), (4)而不是(1,), (2,), (3,), (4,)
发布于 2019-05-21 01:22:43
将4个permutations调用链接在一起
from itertools import chain, permutations
nums = [1,2,3,4]
perms = list(chain.from_iterable(permutations(nums, i) for i in range(1,5)))
print(perms)如果你想把1-tuple打印成单独的值,你需要单独处理:
for t in perms:
if len(t) == 1:
print("(t[0])")
else:
print(t)这是如果您关心元组的外观的话。如果您确实想要一个非元组的值,则需要单独提取该值,并记住1和(1)是完全相同的值。
perms = list(nums, # permutations(nums, 1) == nums
chain.from_iterable(permutations(nums, i) for i in range(2,5)))发布于 2019-05-21 01:27:17
您也可以将其编写为生成器表达式:
perms = (it for i in range(1, 4) for it in itertools.permutations(nums,i))https://stackoverflow.com/questions/56225513
复制相似问题