gpt4 book ai didi

python - 简单的 python 算法没有按预期运行

转载 作者:行者123 更新时间:2023-11-30 22:18:35 24 4
gpt4 key购买 nike

我有一个非常简单的算法,旨在将 48 个数字排序到具有特定范围的桶中。例如,如果我的范围是 [0, 16), [16, 32), [32, 48)我有 3 个桶,每个桶有 16 个整数。

ds = range(0, 48)
bounds = [[0, 16], [16, 32], [32, 48]]
acd = [[]] * len(bounds)

for d in ds:
for i in range(0, len(bounds)):
if bounds[i][0] <= d < bounds[i][1]:
print("Adding %s to %s" % (d, i))
acd[i] += [d]

打印语句按预期工作,例如它将打印“Adding 47 to 2”

但是,数组acd它应该包含桶,在所有 3 个桶中都有所有 48 个元素。我有点不明白为什么会发生这种情况,因为它是一个如此简单的算法。

最佳答案

问题出在这一行:

acd = [[]] * len(bounds)

acd 将包含 len(bounds) 倍相同的空列表。您需要它们是不同的列表。

acd = [[] for _ in range(len(bounds))]

仅当您需要同一 x 的多个副本时,[x] * n 快捷方式才适用。

关于python - 简单的 python 算法没有按预期运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49341764/

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