gpt4 book ai didi

python - python中单词的正确生成

转载 作者:行者123 更新时间:2023-11-30 22:39:56 25 4
gpt4 key购买 nike

我认为这段代码的意图很明确。我想在 X 中包含所有可能的输入单词,每个数字都是列表中的一个元素。下面的代码适用于 4 位数字,但对于更大的单词就无法持续。我怎样才能使其更具可扩展性?假设我想要 n 位数字的单词而不是 4 位数字。

d = [0,1]
X = [[x1,x2,x3,x4] for x1 in d for x2 in d for x3 in d for x4 in d]

最佳答案

您可以使用itertools.product为此:

<b>from itertools import product</b>

d = [0,1]
x = [list(t) for t in <b>product(d,repeat=4)</b>]

这给出:

>>> x
[[0, 0, 0, 0], [0, 0, 0, 1], [0, 0, 1, 0], [0, 0, 1, 1], [0, 1, 0, 0], [0, 1, 0, 1], [0, 1, 1, 0], [0, 1, 1, 1], [1, 0, 0, 0], [1, 0, 0, 1], [1, 0, 1, 0], [1, 0, 1, 1], [1, 1, 0, 0], [1, 1, 0, 1], [1, 1, 1, 0], [1, 1, 1, 1]]

通过将 repeat= 修改为例如 5,您可以获得所有可能的 5 位数字列表。

如果您不需要列表 - 元素不应被更改 - 可以使用元组,在这种情况下您可以删除 list(..) 构造:

# list of tuples

from itertools import product

d = [0,1]
x = <b>list(</b>product(d,repeat=4)<b>)</b>

这会生成:

>>> x
[(0, 0, 0, 0), (0, 0, 0, 1), (0, 0, 1, 0), (0, 0, 1, 1), (0, 1, 0, 0), (0, 1, 0, 1), (0, 1, 1, 0), (0, 1, 1, 1), (1, 0, 0, 0), (1, 0, 0, 1), (1, 0, 1, 0), (1, 0, 1, 1), (1, 1, 0, 0), (1, 1, 0, 1), (1, 1, 1, 0), (1, 1, 1, 1)]

请注意,product(..) 本身是一个生成器:它延迟生成元素。如果生成的元素数量很大并且您可以一次处理一个,这会很有用。在这种情况下,您最好不要构建列表。例如,您可以使用:

<b>for</b> tup <b>in product(d,repeat=4)</b>:
print(tup)

打印所有元组。虽然效果与 for tup in x: 相同,但现在内存使用量可以更低(这取决于解释器中垃圾收集器的实现) ):因为并非所有元组都必须同时位于内存中。生成器发出的下一个元组可能重用上一个元组占用的内存,因为该位置现在是空的(至少假设您不将元组存储在列表中等)

关于python - python中单词的正确生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43005714/

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