【问题标题】:Making a list of lists with no refrences in python [duplicate]在python中制作没有引用的列表列表[重复]
【发布时间】:2014-01-28 20:49:14
【问题描述】:

我正在尝试以单行有效的方式制作列表列表,但我想不出任何方法来避免引用。这是我迄今为止尝试过的,显然没有成功:

>>> test=[[None]*3][:]*3
>>> test
[[None, None, None], [None, None, None], [None, None, None]]
>>> test[0][0]=0
>>> test
[[0, None, None], [0, None, None], [0, None, None]]
>>> 

这不是我想要发生的。我想要的是 0 成为第一个列表的第一项。我该怎么做?

【问题讨论】:

    标签: python list


    【解决方案1】:

    使用list comprehension

    test = [[None] * 3 for _ in range(3)]
    

    (注意_ 只是一个不相关的输出约定,在本例中为012

    【讨论】:

    • 谢谢。我试图将其归为一行,因此我避免了 for 循环。我忘了它们可以像这样压缩成一行。顺便说一句,使用 _ 而不是变量不存储数字吗?
    • 正是如此。为了进一步澄清您的注释:_ 对解释器没有任何特殊含义——这完全是为了便于阅读。它让任何未来的程序员都知道我们并不关心range(3) 的结果是什么,我们只想通过range(3)
    • 它确实存储了它,但它让未来的“考古学家”清楚地知道你不在乎它是什么。
    • 您可以使用for _ in lst: print _,它会按预期工作,但您的同事会觉得您很有趣,因为您明确表示“嘿,遍历lst,但我们不会使用每个元素-- 哦,等等,我们还是用那个元素吧”
    猜你喜欢
    • 1970-01-01
    • 2015-04-25
    • 1970-01-01
    • 1970-01-01
    • 2016-11-08
    • 2018-08-19
    • 2011-10-23
    • 2017-09-04
    相关资源
    最近更新 更多