from itertools import permutations
nums = [0, 1, 2, 3, 4, 5]
length = len(nums )
for k in range(1, length + 1):
for perm in permutations(nums, k):
print("".join(map(str, perm)))
from itertools import permutations
nums = [0, 1, 2, 3, 4, 5]
length = len(nums )
for k in range(1, length + 1):
for perm in permutations(nums, k):
# conditionally print a permutation
if list(perm) == sorted(perm):
print("".join(map(str, perm)))
from itertools import permutations
from pprint import pprint
data = range(6)
def inc_perms(it):
for i, _ in enumerate(data):
yield from permutations(data, i)
pprint(list(inc_perms(data)))
因为输出的顺序很重要(
021
和102
都存在),所以可以使用排列。你们需要1-置换,2-置换,…,N-置换,其中N是列表的长度。所以我们需要一个外环(
join(map..
是将数字序列打印为单个胶合字符串)这印了很多东西
诸如排序排列之类的约束可以与if一起放置。例如:
在这里,我们说排列是可以打印,如果它是排序。所以
012
和014
一样好,但不是203
等等。我使用sorted
,因为它返回list,所以我也将perm(即元组)转换为一个列表进行比较。顺便说一句,我认为sorted
是可读的,但更快的方法是写if all(perm[i] < perm[i+1] for i in range(k-1)):
。这将一次连续检查两个元素,如果它们彼此小于,则一直检查到最后这给了我们
似乎您希望获得递增的置换量,您可以使用^{} 来实现此目的:
相关问题 更多 >
编程相关推荐