Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python itertools.permutations是否总是返回已排序的对象?_Python_Itertools - Fatal编程技术网

Python itertools.permutations是否总是返回已排序的对象?

Python itertools.permutations是否总是返回已排序的对象?,python,itertools,Python,Itertools,我的问题需要迭代一个非常大的10个排列!(或更大)置换:a=itertools.permutation(范围(10)) 我的输入范围始终是形式范围(x),当我在a中迭代时,几乎所有情况下,排列都是按字典顺序排序的 即 等等。这总是保证吗? 我不想对它进行明确的排序 a=sorted(itertools.permutation(范围(10)) 因为这将把转换为,这意味着python将尝试分配大量内存,这是我想要避免的。例如 a = itertools.permutations([1,2,3,4,5

我的问题需要迭代一个非常大的10个排列!(或更大)置换:
a=itertools.permutation(范围(10))

我的输入范围始终是形式范围(x),当我在
a
中迭代时,几乎所有情况下,排列都是按字典顺序排序的 即

等等。这总是保证吗? 我不想对它进行明确的排序
a=sorted(itertools.permutation(范围(10))

因为这将把
转换为
,这意味着python将尝试分配大量内存,这是我想要避免的。例如

a = itertools.permutations([1,2,3,4,5,6,7,8,9])
sys.getsizeof(a)
输出
232

b = sorted(a)
sys.getsizeof(b)
输出
3215232

b = sorted(a)
sys.getsizeof(b)
如果这不是一个保证,那么替代方案是什么?

从中,我们可以看到,如果输入被排序(即
范围(x)
是),并且作为一个iterable,它确实会返回按字典排序的排列,因此您不必担心作为列表的内存分配

排列按字典排序顺序发出。因此,如果输入 iterable排序后,排列元组将以排序方式生成 秩序

从中,我们可以看到,如果输入被排序(即
range(x)
是),它确实会返回按字典顺序排序的排列,并且也是一个iterable,因此您不必担心作为列表的内存分配

排列按字典排序顺序发出。因此,如果输入 iterable排序后,排列元组将以排序方式生成 秩序

从文档中:

排列按字典排序顺序发出。因此,如果输入iterable为>排序,则排列元组将按排序顺序生成

因此,您的问题的答案是肯定的,对于像
范围(x)
这样的输入,排列将按照字典顺序进行排序。

来自文档:

排列按字典排序顺序发出。因此,如果输入iterable为>排序,则排列元组将按排序顺序生成


所以你的问题的答案是肯定的,对于像
range(x)
这样的输入,排列将按字典顺序排序。

这可以通过运行一些代码来回答,不是吗<代码>列表(itertools.permutations(reversed(range(3)))我不希望输出是一个列表需要
list()
来显示整个置换序列,因为置换返回一个惰性生成器。但列表不会改变顺序,这是文档中规定的确定顺序。我的问题是,如果输入排序,itertools.permutations是否保证结果排序?下面已经给出了答案,谢谢。这可以通过运行一些代码来解决,不是吗<代码>列表(itertools.permutations(reversed(range(3)))我不希望输出是一个列表需要
list()
来显示整个置换序列,因为置换返回一个惰性生成器。但列表不会改变顺序,这是文档中规定的确定顺序。我的问题是,如果输入排序,itertools.permutations是否保证结果排序?下面已经回答了,谢谢