zoukankan      html  css  js  c++  java
  • 《流畅的python》:由*初始化一个由列表组成的列表

    有时候我们需要初始化一个嵌套着几个列表的列表,这种情况下推荐使用列表推导式

    代码1:

    
    
    def test01():
    l = [["_"] * 3 for i in range(3)]
    print(l)
    l[1][2] = "x"
    print(l)
    if __name__ == '__main__': test01()

    执行结果

    [['_', '_', '_'], ['_', '_', '_'], ['_', '_', '_']]
    [['_', '_', '_'], ['_', '_', 'x'], ['_', '_', '_']]

     

    代码2:这种看着便捷,但实际上是错误的方式,外层列表里面实际上存的是3个指向同一个引用的列表,修改任一一个则全都被修改

    def test02():
        l = [["_"]*3]*3
        print(l)
        l[1][2] = "x"
        print(l)
    
    if __name__ == '__main__':
        test02()
    
    执行结果
    [['_', '_', '_'], ['_', '_', '_'], ['_', '_', '_']]
    [['_', '_', 'x'], ['_', '_', 'x'], ['_', '_', 'x']]

    上面两种代码的等价效果:

    代码一相当于:
    def test_11():
        l = []
        for i in range(3):
            row = ["_"]*3
            l.append(row)
        print(l)
        l[1][2] = "x"
        print(l)
    
    if __name__ == '__main__':
        test_11()
    
    代码二相当于:
    def test_22():
        l = []
        row = ["_"] * 3
        for i in range(3):
            l.append(row)
    
        print(l)
        l[1][2] = "x"
        print(l)
    
    
    if __name__ == '__main__':
        test_22()
  • 相关阅读:
    皇帝的用人之道,这一点古今皆同
    sharepoint打包
    powershellbegin
    taxonomy
    powershelluninstall webapplication
    面试题
    字符串处理
    在页面中插入视频时的文件夹命名问题
    process object
    扩展名显示与隐藏
  • 原文地址:https://www.cnblogs.com/canghai1024/p/13881394.html
Copyright © 2011-2022 走看看