遍历列表列表

米蒂亚·斯蒂格利茨(Mitya Stiglitz)

我是编程新手,但有无法解决的基本问题。我尽可能地简化了它。在此简化版本中,我要遍历一个空列表。我只想将索引存储在“对称矩阵”中:

n = 2
B = [[None] * n] * n
print B, "\n"
for i in range(n):
    for j in range(n):
        B[i][j] = [i, j]
        print B

最初,列表如下所示:

[[None, None], [None, None]] 

循环槽后,我希望打印输出为:

[[[0, 0], None], [None, None]]
[[[0, 0], [0, 1]], [None, None]]
[[[1, 0], [0, 1]], [[1, 0], None]]
[[[1, 0], [1, 1]], [[1, 0], [1, 1]]]

相反,我得到这个:

[[[0, 0], None], [[0, 0], None]]
[[[0, 0], [0, 1]], [[0, 0], [0, 1]]]
[[[1, 0], [0, 1]], [[1, 0], [0, 1]]]
[[[1, 0], [1, 1]], [[1, 0], [1, 1]]]

我想念什么?感谢您的帮助...

埃里克·卡普伦

你需要什么,而不是你定义当前的方式Bn子列表的“新鲜”的实例:

B = [[None] * n for _ in range(n)]

它等效于但更短,并且(对于Pythonista)比:

B = []
for _ in range(n):
    B.append([None] * n)

这是因为Python中的列表不是值而是对象。即默认情况下不复制它们。例如:

>>> a = []
>>> b = [a, a]  # list of 2 items, both pointing to the same list instance
>>> b[0].append(1)  # b[0] refers to the same list instance also referenced by a
>>> print b
[[1], [1]]

而:

>>> b = [[], []]  # list of 2 distinct sublists
>>> b[0].append(1)
>>> print b
[[1], []]

如果您将该知识应用于

B = [[None] * n] * n

您会发现构造中存在错误-您正在创建一个包含另一个n None列表的列表然后您要“放大”列表以包含n此类列表;但是,将使用相同的列表实例,就像上面更琐碎的示例一样。

PS更准确地说,Python中的所有内容都是对象而不是值,除非对象是不可变的(例如ints和floats和strs等),就好像它们是值并且总是被复制—这是因为如果对象是不可变的,您最好假装对其进行新引用,因为它看起来相同并且无法修改。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

遍历列表列表

来自分类Dev

遍历列表列表

来自分类Dev

Python:遍历列表列表

来自分类Dev

遍历列表列表和列表列表

来自分类Dev

遍历列表列表以创建新的列表列表

来自分类Dev

如何遍历列表列表列表列表列表... Python中的坐标对列表列表?

来自分类Dev

遍历Python中的列表列表

来自分类Dev

Java 8流:遍历列表列表

来自分类Dev

如何遍历jinja中的列表列表

来自分类Dev

遍历列表列表并乘以每个元素

来自分类Dev

遍历Python中的列表列表

来自分类Dev

使用JSTL遍历列表列表

来自分类Dev

遍历java中的列表列表

来自分类Dev

在循环中遍历列表列表?

来自分类Dev

R遍历列表列表,同时更改列表中的值

来自分类Dev

遍历列表列表并保存其他文件

来自分类Dev

使用Python遍历列表列表并追加到数据框

来自分类Dev

遍历terraform中的地图列表列表

来自分类Dev

遍历列表列表并保存其他文件

来自分类Dev

Python:遍历匹配值的列表列表并对其进行更改

来自分类Dev

遍历列表列表以使用matplotlib进行绘制

来自分类Dev

列表列表乘以列表列表

来自分类Dev

从“列表列表列表”到“列表列表”-Python

来自分类Dev

列表列表的排列

来自分类Dev

创建列表列表

来自分类Dev

词典列表列表?

来自分类Dev

搜索列表列表

来自分类Dev

列表列表的乘法

来自分类Dev

列表列表的修改