gpt4 book ai didi

Python - 生成具有特定模式的特定排列列表(添加到 itertools)

转载 作者:太空宇宙 更新时间:2023-11-04 10:28:50 24 4
gpt4 key购买 nike

我正在尝试找到一种编写 Python 脚本的方法,我可以在其中生成一个包含条目(字符串)列表的文件,这些条目(字符串)是特定输入的排列。详细说明:

假设您在一个字符串中有 9 位数字。但是每个数字中唯一可能的值在 0123456789 的范围内。所以我想要 0123456789 的所有排列超过 9 位......以及所有这些排列的字符串列表(即 1,000,000,000 种可能的排列)。

使用 itertools.permutations 足够简单吧?没有。根据官方文档:

def permutations(iterable, r=None):
# permutations('ABCD', 2) --> AB AC AD BA BC BD CA CB CD DA DB DC

如果您仔细观察结果,没有重复……所以没有 AA 或 BB 的实例。这意味着如果我尝试运行 0123456789 的所有排列超过 9 个数字,我将不会得到组合“11111111”或“111222333”。 IE。我不会得到我的 10 亿个结果,对吗?

我在这里误解了 itertools 模块吗?我该怎么做才能创建一个文件,其中包含超过 9 位数字的“0123456789”所有可能排列的字符串列表?

最佳答案

在一般的数学术语中,'AA' 不是 'ABCD'排列。您可能正在寻找笛卡尔积——itertools 也支持它。例如:

>>> for x in it.product('ABC', repeat=len('ABC')): print(x)
('A', 'A', 'A')
('A', 'A', 'B')
('A', 'A', 'C')
('A', 'B', 'A')
('A', 'B', 'B')
('A', 'B', 'C')
('A', 'C', 'A')
('A', 'C', 'B')
('A', 'C', 'C')
('B', 'A', 'A')
('B', 'A', 'B')
('B', 'A', 'C')
('B', 'B', 'A')
('B', 'B', 'B')
('B', 'B', 'C')
('B', 'C', 'A')
('B', 'C', 'B')
('B', 'C', 'C')
('C', 'A', 'A')
('C', 'A', 'B')
('C', 'A', 'C')
('C', 'B', 'A')
('C', 'B', 'B')
('C', 'B', 'C')
('C', 'C', 'A')
('C', 'C', 'B')
('C', 'C', 'C')

请注意,这些绝对不是排列——3 项的排列数是 3 的阶乘,即 6,而 3 项序列的 3 个副本的笛卡尔积中这些项的数目是 3 到三次方,又名 81。差别很大!-)

关于Python - 生成具有特定模式的特定排列列表(添加到 itertools),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28132719/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com