精华内容
下载资源
问答
  • Python 二维数组初始化

    千次阅读 2015-11-24 17:59:23
    Python二维数组初始化常犯的错误创建一个二维数组: test_list = [[]] * 4 然后,向第一个列表中插入数值: test_list[0].append(1) print test_list 此时会出现: [[1],[1],[1],[1]] 这说明这种创建数组的...

    Python二维数组初始化常犯的错误

    创建一个二维数组:
    test_list = [[]] * 4
    然后,向第一个列表中插入数值:
    test_list[0].append(1)
    print test_list
    此时会出现:
    [[1],[1],[1],[1]]
    这说明这种创建数组的方式是浅拷贝,真正要形成我们需要的二维数组,需要:
    test_list = [[] for i in xrange(0, 4)]
    test_list[0].append(1)
    print test_list
    得到:

    [[1],[],[],[]]

    展开全文
  • 这种方式比嵌套列表推导更快[x[:] for x in [[foo] *...这里有一些python3时序,适用于小型和大型列表$python3 -m timeit '[x[:] for x in [[1] * 10] * 10]'1000000 loops, best of 3: 1.55 usec per loop$ python3...

    这种方式比嵌套列表推导更快[x[:] for x in [[foo] * 10] * 10] # for immutable foo!

    这里有一些python3时序,适用于小型和大型列表$python3 -m timeit '[x[:] for x in [[1] * 10] * 10]'1000000 loops, best of 3: 1.55 usec per loop

    $ python3 -m timeit '[[1 for i in range(10)] for j in range(10)]'100000 loops, best of 3: 6.44 usec per loop

    $ python3 -m timeit '[x[:] for x in [[1] * 1000] * 1000]'100 loops, best of 3: 5.5 msec per loop

    $ python3 -m timeit '[[1 for i in range(1000)] for j in range(1000)]'10 loops, best of 3: 27 msec per loop

    说明:

    [[foo]*10]*10创建重复10次的同一对象的列表。你不能只使用它,因为修改一个元素将修改每一行中的相同元素!

    x[:]相当于list(X)但更高效,因为它避免了名称查找。无论哪种方式,它都会创建每行的浅表副本,因此现在所有元素都是独立的。

    所有元素都是相同的foo对象,所以如果foo是可变的,你就不能使用这个方案。你必须使用它import copy[[copy.deepcopy(foo) for x in range(10)] for y in range(10)]

    或者假设一个Foo返回foos 的类(或函数)[[Foo() for x in range(10)] for y in range(10)]

    展开全文
  • python二维list初始化

    千次阅读 2018-09-27 10:57:29
    原文:...python初始化list列表(1、2) 1.初始化递增的listlist1 = range(10) #print list1 #[0,1,2,...,9] 2.初始化每项为0的一数组: list2 = [0] * 5 #print list2 #[0,0,0,0,0] ...

    原文:https://www.cnblogs.com/zqifa/p/python-list.html

    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.初始化固定值的一维数组:

    initVal = 1
    listLen = 5
    list3 = [ initVal for i in range(5)]
    #print list3
    #[1,1,1,1,1]
    list4 = [initVal] * listLen
    #print list4
    #[1,1,1,1,1]

    4.初始化一个5x6每项为0(固定值)的数组(推荐使用):

    multilist = [[0 for col in range(5)] for row in range(6)]

    5.初始化一个5x6每项为0(固定值)的数组

    multilist = [[0] * 5 for row in range(3)]

     

    看到了以上的方法,那初始化一个二维数组时,是否可以这样做呢:
    multi = [[0] * 5] * 3

    其实,这样做是不对的,因为[0] * 5是一个一维数组的对象,* 3的话只是把对象的引用复制了3次,比如,我修改multi[0][0]:
    multi = [[0] * 5] * 3
    multi[0][0] = 'Hello'
    print multi

    输出的结果将是:
    [['Hello', 0, 0, 0, 0], ['Hello', 0, 0, 0, 0], ['Hello', 0, 0,0, 0]]
    我们修改了multi[0][0],却把我们的multi[1][0],multi[2][0]也修改了。这不是我们想要的结果。

    但是如下写法是对的:
    multilist = [[0] * 5 for row in range(3)]
    multilist[0][0] = 'Hello'
    print multilist
    我们看输出结果:
    [['Hello', 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
    恩,没问题。但是,由于使用 * 的方法比较容易引起混淆导致Bug,所以还是推荐使用上面方法4,即:

    multilist = [[0 for col in range(5)] for row in range(6)]

    展开全文
  • Python二维列表初始化后的赋值问题 问题描述 Python用[[0] * n] * m方式初始化二维列表时,对二维列表里一个元素赋值时,会对该元素所在二维列表中的一整列同时赋值。 # 该方式初始化二维列表,对二维列表里一个...

    Python二维列表初始化后的赋值问题

    问题描述

    • Python用[[0] * n] * m方式初始化二维列表时,对二维列表里一个元素赋值时,会对该元素所在二维列表中的一整列同时赋值。
    # 该方式初始化二维列表,对二维列表里一个元素赋值时,会对该元素所在二维列表中的一整列同时赋值
    In[1]: list0 = [[0] * 2] * 3
    In[2]: list0
    Out[2]: [[0, 0], [0, 0], [0, 0]]
    
    # 对一个元素赋值
    In[3]: list0[1][1] = 1
    In[4]: list0
    # 影响其他元素,修改了其他元素
    Out[4]: [[0, 1], [0, 1], [0, 1]]
    

    解决方法

    • 采用list1 = [([0] * n) for _ in range(m)]方式初始化二维列表,可对二维列表里任意一个元素赋值,不会对其他行元素产生干扰。
    # 该方式初始化二维列表,可对二维列表里任意一个元素赋值,不会对其他元素产生干扰
    In[5]: list1 = [([0] * 2) for _ in range(3)]
    In[6]: list1
    Out[6]: [[0, 0], [0, 0], [0, 0]]
    
    # 对一个元素赋值
    In[7]: list0[1][1] = 1
    In[8]: list1
    # 不影响其他元素,仅修改了这一个元素
    Out[8]: [[0, 0], [0, 0], [0, 0]]
    
    展开全文
  • 1.初始化一个一列表 a = [0] * 10 # 初始化元素值,list长度固定,此时可直接读取a[3],直接读取索引0-9之间的值,不能访问索引大于9的元素 b = [] # 初始化元素为空,不可访问任何元素,此时b为空列表 print('--...
  • 当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初始化一个m * n的二维list: list = [[0] * m for _ in range(n)] 不能直接用: b = [[0] * 5] * 5 因为这样相当于把[0]*5这个一维列表复制了5次,因此更改[0]*5中的任意一个元素,都会同时修改其他四...
  • 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:二维列表(list)初始化

    千次阅读 多人点赞 2019-04-29 22:15:01
    当我们使用python做数据的时候,经常会遇到需要初始化一个二维列表,然后对列表的每一个子项目(我们这里假设也是列表)进行操作。        在初始化的时候有一个坑,在做题目的时候卡住好久,...
  • 参考代码 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] 重新分配内存,实现深拷贝。 目标 生成 [[],...
  • python初始化指定长度的二维list

    千次阅读 2018-11-10 14:52:49
    python中,为了实现锯齿数组的数据结构,经常需要初始化一个行数指定、...python初始化指定长度的一维list有两种等价的方式 方式一 a = [None] * n 方法 a = [None for i in range(n)] 结果都能得到 (n =...
  • Pythonlist初始化

    2019-07-16 22:04:30
    list初始化 假设要使用一个二维的list,当然目前numpy是最方便的,如果没法使用numpy的话,我们使用二维list代替,但是list需要事先指定长宽! r, c = 3,4 arr1 = [[0] * c]*r arr2 = [[0 for _ in range(c)] for _ ...
  • python多维list初始化细节 觉得list添加元素比较方便,最近使用二维list来存数据,最后转array进行处理。 在想用多维list存储数据时,往往需要先对其进行初始化,但却发现了如下现象 # P1 a=[[]]*3 a Out[18]: [...
  • python初始化list列表(1、2) https://www.cnblogs.com/zqifa/p/python-list.html
  • Python初始化一个5 x 3每项为0的数组,最好方法是: multilist=[[0forcolinrange(5)]forrowinrange(3)] 我们知道,为了初始化一个...没错,那我们初始化一个二维数组时,是否可以这样做呢: multi=[[0]*5]*...
  • 一、引言这是我在学习《Python Algorithms 2nd》第 29 页时候看到的代码:N = [[0]*10 for i in range(10)]按照作者的说法,上述代码会生成一个初始化全部元素值为 0 的二维数组。那么,让我们探讨下,这是为什么呢...
  • Python初始化数组及注意事项 初始化一维数组 #方法一 # 0为数组内初始数据,10位数据长度 list = [0]*10 print(list) # 结果:[0, 0, 0, 0, 0, 0, 0,... 初始化二维数组 #方法一 a = [list()] * 3 for i in .
  • python list初始化

    2020-06-18 17:20:16
    a=[0]*5 二维: b=[[0]*5]*10 or b=[[0,1]]*5
  • python初始化list列表(1、2) 1.初始化递增的listlist1 = range(10) print list1 [0,1,2,…,9] 2.初始化每项为0的一数组: list2 = [0] * 5 print list2 [0,0,0,0,0] 3.初始化固定值的一...
  • 1.初始化递增的listlist1 = range(10) #print list1 #[0,1,2,...,9] 2.初始化每项为0的一数组: list2 = [0] * 5 #print list2 #[0,0,0,0,0] 3.初始化固定值的一数组: initVal = 1 listLen = 5 list3 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 17,507
精华内容 7,002
关键字:

python二维list初始化

python 订阅