首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >简单python算法不像预期的那样运行

简单python算法不像预期的那样运行
EN

Stack Overflow用户
提问于 2018-03-17 20:48:27
回答 1查看 43关注 0票数 1

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

代码语言:javascript
复制
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]

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-17 20:51:12

问题是这条线:

代码语言:javascript
复制
acd = [[]] * len(bounds)

acd将包含len(bounds)乘以相同的空列表。你需要他们成为不同的名单。

代码语言:javascript
复制
acd = [[] for _ in range(len(bounds))]

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49341764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档