在创建一个指定大小的列表列表时遇到了困难。

10 浏览
0 Comments

在创建一个指定大小的列表列表时遇到了困难。

我正在尝试创建一个包含大约5000个列表的列表,并且它一直出错。
\n目前我只是这样做的:\n

array = [[]]*5000
for line in f2:
    a = line.split()
    grid = int(a[0])
    array[grid].append(a[1])
print Counter(array[0]).most_common(10)

\n问题是,当我创建计数器时,它会将整个列表数组视为一个列表来处理。我是否有明显的错误?\n谢谢

0
0 Comments

在这段内容中,问题的原因是使用[[]]*5000创建了一个大小为5000的列表,但是实际上这个列表中的每个元素都是对同一个列表的引用。所以,如果修改了其中一个列表,其他所有的列表也会被修改。

解决方法是使用a = [[] for _ in xrange(5000)]来创建一个大小为5000的列表,其中的每个元素都是一个新的空列表。这样,每个列表都是独立的,修改一个列表不会影响其他列表。

这个问题的出现并不罕见,类似的问题在Python中已经有很多重复的提问了。可以考虑创建一个“常见问题解答”(Frequently Answered Answers, FAA)的页面,然后可以直接引用该页面的答案,比如可以说“参见FAA #27”。其他一些常见问题的候选项有:“第N行的语法错误意味着第N-1行有未匹配的括号”,“比较1和'0'的结果可能不是你所想的,因为它们是不同的类型”。我想我会发布一个新的社区Wiki问题来讨论这个问题。

0