zoukankan      html  css  js  c++  java
  • 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]]
     
     
     
     
  • 相关阅读:
    解决ListView异步加载数据之后不能点击的问题
    android点击实现图片放大缩小 java技术博客
    关于 数据文件自增长 的一点理解
    RAC 实例不能启动 ORA1589 signalled during ALTER DATABASE OPEN
    Linux 超级用户的权利
    RAC 实例 迁移到 单实例 使用导出导入
    Shell 基本语法
    Linux 开机引导与关机过程
    RAC 实例不能启动 ORA1589 signalled during ALTER DATABASE OPEN
    Oracle RAC + Data Guard 环境搭建
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/13217355.html
Copyright © 2011-2022 走看看