• python二维列表(list)初始化


    python二维列表(list)初始化

    一、总结

    一句话总结:

    可以用c = [[0]*4 for _ in range(3)]的方式来初始化3行4列的二维数组,用乘号(*)重复不可变数据类型(这里是int 0),用循环重复可变数据类型(这里是列表)

    二、python:二维列表(list)初始化

    转自或参考:python:二维列表(list)初始化
    https://blog.csdn.net/weixin_43216017/article/details/89683873

           当我们使用python做数据的时候,经常会遇到需要初始化一个二维列表,然后对列表的每一个子项目(我们这里假设也是列表)进行操作。

           在初始化的时候有一个坑,在做题目的时候卡住好久,根本找不到解决的方法。后来才发现是二维列表初始化的问题。

           首先,如果我们需要初始化一个一维列表的时候

    In [1]:a = [0] * 5
    In [2]:a
    Out[2]: [0, 0, 0, 0, 0]

           二维列表的初始化可以这样做:

    In [3]:b = [[0] * 5] * 5
    In [4]:b
    Out[4]: 
    [[0, 0, 0, 0, 0],
     [0, 0, 0, 0, 0],
     [0, 0, 0, 0, 0],
     [0, 0, 0, 0, 0],
     [0, 0, 0, 0, 0]]

    不过这样有一个很大的问题:这样操作的意思实际上是对于[0] * 5的一维列表复制了5次。也就是说,当我更改其中的任意一个的时候,其实是对b列表中的5个子列表全部修改了。

    In [5]:b[0][0]='这个方法不行'
    In [6]:b
    Out[6]: 
    [['这个方法不行', 0, 0, 0, 0],
     ['这个方法不行', 0, 0, 0, 0],
     ['这个方法不行', 0, 0, 0, 0],
     ['这个方法不行', 0, 0, 0, 0],
     ['这个方法不行', 0, 0, 0, 0]]

           为了解决这个问题,推荐采用以下方法

    In [7]:c = [[0] * 5 for _ in range(5)]
    In [8]:c[0][0]='这个方法行'
    In [9]:c
    Out[9]: 
    [['这个方法行', 0, 0, 0, 0],
     [0, 0, 0, 0, 0],
     [0, 0, 0, 0, 0],
     [0, 0, 0, 0, 0],
     [0, 0, 0, 0, 0]]
     
     
     
     
  • 相关阅读:
    HTML学习笔记
    JSP与Servlet的跳转及得到路径方法整理(转)
    Servlet 学习笔记6:Cookie
    工作=娱乐=爱[龙]
    幸福的方法[龙]
    10张海报,激励人生[龙]
    8个方法让你安然度过低效率的日子[龙]
    使用空余时间的20个有效途径
    人生三点钟
    2013计划
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/13217355.html
Copyright © 2020-2023  润新知