精华内容
下载资源
问答
  • [[]] * n执行lis[i].append(x)时会默认向每一个列表中都加入x。

      写k-means算法时需要初始化一个二维空列表,然后发现每一次迭代后每一个簇的点都是一样的,且都是全部样本点。
      一开始为:

    lis = [[]] * 3
    print(lis)
    lis[2].append(5)
    print(lis)
    

    在这里插入图片描述
      正确写法:

    lis = []
    for i in range(3):
        lis.append([])
    print(lis)
    lis[2].append(5)
    print(lis)
    

    在这里插入图片描述
    或者:

    lis = [[] for _ in range(3)]
    print(lis)
    lis[2].append(5)
    print(lis)
    
    展开全文
  • Python初始化数组及注意事项 初始化一维数组 #方法一 # 0为数组内初始数据,10位数据长度 list = [0]*10 print(list) # 结果:[0, 0, 0, 0, 0, 0, 0,... 初始化二维数组 #方法一 a = [list()] * 3 for i in .

    Python初始化数组及注意事项

    • 初始化一维数组

    #方法一
    # 0为数组内初始数据,10位数据长度
    list = [0]*10  
    print(list)
    # 结果:[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    
    #方法二
    list2 = [0 for i in range(10)]
    print(list2)
    # 结果:[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    
    

     

    • 初始化二维数组

    #方法一
    a = [list()] * 3
    for i in range(3):
        a[i].append(0)
    print(a)
    # 结果:[[0,0,0], [0,0,0], [0,0,0]]
    a[0][0] = 1
    print(a)
    # 结果:[[1,0,0], [1,0,0], [1,0,0]]
    
    
    #方法二
    a = [[0 for i in range(3)] for i in range(3)]
    print(a)
    # 结果:[[0,0,0], [0,0,0], [0,0,0]]
    a[0][0] = 1
    print(a)
    # 结果:[[1,0,0], [0,0,0], [0,0,0]]
    
    

    原因:参见https://blog.csdn.net/qq_41602595/article/details/88688644

    二维情形就不同,因为初始化指定长度的二维list时,我们需要把空序列list()复制n次。如果采用方式一,则对list进行浅拷贝,每一个list调用append等方法时,所有list都会同步调用;而方式二这种python风格的数组comprehension表达式方式,则生成了n个相互独立的list对象,此时每行的list之间互不影响。显然,我们应该使用方式二来进行二维list的指定行数的初始化。
     

    展开全文
  • python初始化二维数组的小问题

    千次阅读 2017-06-10 16:49:26
    python二维数组初始化问题 引子:今天在写用Python写01背包的算法课作业时,发现一个关于二维数组的小问题,本来期末已经很忙了,但这个问题还是值得记录下来的,因为这不是第一次遇到了,这次花了将近一个小时才搞...

     

    python二维数组初始化问题

    引子:今天在用Python写01背包的算法课作业时,发现一个关于二维数组的小问题,本来期末已经很忙了,但这个问题还是值得记录下来的,因为这不是第一次遇到了,这次花了将近一个小时才搞明白。

    问题:

    以如下方式初始化一个二维数组,在使用的过程中有没有问题?

    matrix = [[0] * n] * m

    有问题!可以做个实验:

    >>> m = 3
    >>> n = 4
    >>> matrix = [[0] * n] * m
    >>> matrix
    [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
    >>> matrix[1][2] = 1
    >>> matrix
    [[0, 0, 1, 0], [0, 0, 1, 0], [0, 0, 1, 0]]
    >>>

    可以看出,我只修改了matrix[1][2]这一个元素,但从结果来看,matrix这个二维数组的每一个一维数组的第3个(下标为2)元素都被修改了。对此我的理解是:在申请matrix数组时,“[0] * n”这个一维数组可能只申请了一个,“ * m”这操作,只是创建了m个指向“[0] * n”的引用,因此,若修改这个一维数组中的元素,则matrix中m个一位数组都会被修改。 更详细解释可以参考此篇博客在python中定义二维数组

    解决方案:

    换种初始化的方式:

    >>> matrix = [[0] * n for i in range(0, m)]
    >>> matrix
    [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
    >>> matrix[1][2] = 1
    >>> matrix
    [[0, 0, 0, 0], [0, 0, 1, 0], [0, 0, 0, 0]]
    >>>

    可以看出,上述那种我们想要避免的情况已经不再出现了。

    参考文献

    1.在python中定义二维数组,woshare,博客园,http://www.cnblogs.com/woshare/p/5823303.html。

     

    展开全文
  • python初始化二维矩阵

    2020-07-27 15:53:37
    n为列,m为行 matrix = [[0]*n for _ in range(m)]

    n为列,m为行

    matrix = [[0]*n for _ in range(m)]

    展开全文
  • python初始化二维数组

    千次阅读 2016-10-11 14:39:50
    array = [[0 for col in range(num1)] for row in range(num2)] num1, num2 为自选常量
  • 当list is not defined时候,需要对list进行初始化。 1. 一维list初始化 1)初始化递增数字的list L = range(10) # print(L) # [0,1,2,3,4,5,6,7,8,9] ...2. 二维list初始化 L = [[0] * 5 for i in
  • python:二维列表(list)初始化

    千次阅读 多人点赞 2019-04-29 22:15:01
    当我们使用python做数据的时候,经常会遇到需要初始化一个二维列表,然后对列表的每一个子项目(我们这里假设也是列表)进行操作。        在初始化的时候有一个坑,在做题目的时候卡住好久,...
  • Python用[[0] * n] * m方式初始化二维列表时,对二维列表里一个元素赋值时,会对该元素所在二维列表中的一整列同时赋值。 # 该方式初始化二维列表,对二维列表里一个元素赋值时,会对该元素所在二维列表中的一整列...
  • Python初始化一个5 x 3每项为0的数组,最好方法是: multilist=[[0forcolinrange(5)]forrowinrange(3)] 我们知道,为了初始化一个...没错,那我们初始化一个二维数组时,是否可以这样做呢: multi=[[0]*5]*...
  • Python3 初始化二维数组注意地方

    万次阅读 2019-03-06 10:43:52
    初始化二维数组举例: arr = [[] for i in range(5)] >>> [[], [], [], [], []] arr = [[0, 0] for i in range(5)] arr[2].append(2) >>> [[0, 0], [0, 0], [0, 0, 2],...
  • 一、引言这是我在学习《Python Algorithms 2nd》第 29 页时候看到的代码:N = [[0]*10 for i in range(10)]按照作者的说法,上述代码会生成一个初始化全部元素值为 0 的二维数组。那么,让我们探讨下,这是为什么呢...
  • python初始化二维数组

    万次阅读 2012-06-04 22:59:53
    转自:... Python初始化一个5 x 3每项为0的数组,最好方法是: multilist = [[0 for col in range(5)] for row in range(3)] 我们知道,为了初始化一个一数组,我们可以这样做: alis
  • Python3 List 初始化二维数组 踩坑记录

    千次阅读 2018-08-30 14:22:43
    初始化二维数组举例: >>> test = [[ 0 for i in range(2)] for j in range(3)] >>> test [[0, 0], [0, 0], [0, 0]] 初始一个一维数组,可以使用* >>...
  • Python初始化一个m * n的二维list: list = [[0] * m for _ in range(n)] 不能直接用: b = [[0] * 5] * 5 因为这样相当于把[0]*5这个一维列表复制了5次,因此更改[0]*5中的任意一个元素,都会同时修改其他四...
  • python初始化指定长度的二维list

    千次阅读 2018-11-10 14:52:49
    在python中,为了实现锯齿数组的数据结构,经常需要初始化一个行数指定、...python初始化指定长度的一list有两种等价的方式 方式一 a = [None] * n 方法 a = [None for i in range(n)] 结果都能得到 (n =...
  • 首先是初始化一个一维列表: List=[None,None,None,None] 或者, ...接着是初始化一个二维列表: 如何扩展维度,表示把某一个列表作为一行,多扩展出几行? 在外面套一层括号[ ] List=[None] ...
  • 参考代码 List=[] ... List.append([])#初始化二维列表 List[0].append(1) List[0].append(2) List[0].append(3) List[7].append(50) print(List) 运行结果 [[1, 2, 3], [], [], [], [], [], [], [50]]
  • 前言:初始化一个空的二维列表二维列表由多个列表构成。 注意:Python list使用时,a=[ ]*3,只是在复制引用(只是浅拷贝),只有在修改 a[i] 这个对象时,才会为 a[i] 重新分配内存,实现深拷贝。 目标 生成 [[],...
  • 1.初始化一个一维列表 a = [0] * 10 # 初始化元素值,list长度固定,此时可直接读取a[3],直接读取索引0-9之间的值,不能访问索引大于9的元素 b = [] # 初始化元素为空,不可访问任何元素,此时b为空列表 print('--...
  • python初始化list列表(1、2) 1.初始化递增的list: list1 = range(10) print list1 [0,1,2,…,9] 2.初始化每项为0的一数组: list2 = [0] * 5 print list2 [0,0,0,0,0] 3.初始化固定值的一...
  • Python3 创建二维列表描述代码输出结果注意事项 描述 大家好我叫王大锤,我夜观天象,发现Python3创建二维列表有一个大坑,我他喵的一定要冒着被骂菜鸟的风险在这里告诉大家!!!!! 创建二维空列表方式: 方法一...
  • Python 二维数组初始化

    千次阅读 2015-11-24 17:59:23
    Python二维数组初始化常犯的错误创建一个二维数组: test_list = [[]] * 4 然后,向第一个列表中插入数值: test_list[0].append(1) print test_list 此时会出现: [[1],[1],[1],[1]] 这说明这种创建数组的...
  • 2.初始化每项为0的一数组: list2 = [0] * 5 #print list2 #[0,0,0,0,0] 3.初始化固定值的一数组: initVal = 1 listLen = 5 list3 = [ initVal for i in range(5)] #print list3 #[1,1,1,1,1] list4 = ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 39,369
精华内容 15,747
关键字:

python初始化二维列表

python 订阅