精华内容
下载资源
问答
  • Python二维列表赋值问题 使用该方法建立的二维列表,对a[0][0]进行赋值1,结果第一列全部被赋值为1: >>> a = [[0]*5]*5 >>> a [[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, ...

    Python二维列表的赋值问题

    • 使用该方法建立的二维列表,对a[0][0]进行赋值1,结果第一列全部被赋值为1:
    >>> a = [[0]*5]*5
    >>> a
    [[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]]
    >>> a[0][0] = 1
    >>> a
    [[1, 0, 0, 0, 0],
     [1, 0, 0, 0, 0],
     [1, 0, 0, 0, 0],
     [1, 0, 0, 0, 0],
     [1, 0, 0, 0, 0]]
    
    • 正确建立二维列表的方法:
    >>> a = [[0 for _ in range(5)] for _ in range(5)]
    >>> a
    [[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]]
    >>> a[0][0] = 1
    >>> a
    [[1, 0, 0, 0, 0],
     [0, 0, 0, 0, 0],
     [0, 0, 0, 0, 0],
     [0, 0, 0, 0, 0],
     [0, 0, 0, 0, 0]]
    
    展开全文
  • >>>a=[[]]*3 >>>a [[], [], []] >...原因是用上述方法定义的二维列表的每个子列表都来自同一块数据区。 修改: >>>def create_2dim_list(t): list_=[] for i in r...
    >>>a=[[]]*3
    >>>a
    [[], [], []]
    >>>a[0].append(1)
    >>>a
    [[1], [1], [1]]
    

    原因是用上述方法定义的二维列表的每个子列表都来自同一块数据区。
    修改:

    >>>def create_2dim_list(t):
    	list_=[]
    	for i in range(0,t):
    		list_.append([])
    	return list_
    >>>a=create_2dim_list(3)
    >>>a
    [[], [], []]
    >>>a[0].append(1)
    >>>a
    [[1], [], []]
    
    展开全文
  • 今天小编就为大家分享一篇解决Python二维数组赋值问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 今天在写程序时遇到一个怪异的问题,采用双重for循环对一个二维数组中的每一个元素进行赋值,结果发现,它们的每一列都一起改变了。例子如下:k = 0a = [[0] * 3] * 3for i in range(3):for j in range(3):a[i][j] = ...

    今天在写程序时遇到一个怪异的问题,采用双重for循环对一个二维数组中的每一个元素进行赋值,结果发现,它们的每一列都一起改变了。例子如下:

    k = 0

    a = [[0] * 3] * 3

    for i in range(3):

    for j in range(3):

    a[i][j] = k

    k += 1

    print(a)

    运行结果:

    [[6, 7, 8], [6, 7, 8], [6, 7, 8]]

    百思不得其解,搜索得知,Python中的list属于一个可变对象,那么对它进行赋值时,会进行一个浅拷贝。所谓浅拷贝,我们可以把它理解为引用,仅仅复制了容器中元素的地址,改变其中一个,其对应的值也会随之改变。

    例如:

    arr = [0,1,2,3]

    arr = [arr]*2

    arr[0][0] = 100

    arr[1][3] = 200

    print(arr)

    运行结果:

    [[100, 1, 2, 200], [100, 1, 2, 200]]

    为了防止这种浅拷贝,我们需要换个方式来创建二位数组

    a = [([0] * 3) for p in range(3)]

    这样我们就避免了浅拷贝带来的影响(意外中改变了值)

    我们在进行一次实验:

    k = 0

    a = [([0] * 3) for p in range(3)]

    for i in range(3):

    for j in range(3):

    a[i][j] = k

    k += 1

    print(a)

    运行结果:

    [[0, 1, 2], [3, 4, 5], [6, 7, 8]]

    解决!

    展开全文
  • python二维列表list赋值时整列重复赋值问题

    千次阅读 多人点赞 2019-01-30 22:32:55
    这种情况的原因是创建列表时第2,3行其实是第一行的一个浅拷贝,它们的地址是一样的,给任意一个赋值其余的也会被赋值,解决方法是使用如下方法建立二维列表 l = [[0]*3 for i in range(3)] 赋值结果: l[0][1]...

    当我们使用如下方式创建一个二维列表时:

    l = [[0]*3]*3
    

    在这里插入图片描述
    如果尝试给其中一个元素赋值

    l[0][1] = 1
    

    会发现整个列表的第二列都被赋值了
    在这里插入图片描述
    这种情况的原因是创建列表时第2,3行其实是第一行的一个浅拷贝,它们的地址是一样的,给任意一个赋值其余的也会被赋值,解决方法是使用如下方法建立二维列表

    l = [[0]*3 for i in range(3)]
    

    赋值结果:

    l[0][1] = 1
    

    在这里插入图片描述

    展开全文
  • python二维(多维)列表深拷贝python一维数组拷贝方法python二维数组拷贝方法 python一维数组拷贝方法 我们都知道如果直接使用等号进行列表赋值将会导致两个列表共享内存而导致修改其中一个另外一个都会相应改变,...
  • Python二维数组赋值问题

    万次阅读 2018-03-30 15:29:42
    当我们采用s=[[0]*3]*2初始化一个数组,然后对s[0][0]进行赋值,改变的是第一列所有的值。因为用s = [[0]*3]*2 初始化数组,他表示的是指向这个列表的引用,所以当你修改一个值的时候,整个列表都会修改。换一种初始...
  • 需要在程序中使用二维数组,网上找到一种这样的用法:123456#创建一个宽度为3,高度为4的数组[[0,0,0], [0,0,0], [0,0,0], [0,0,0]]myList= [[0]* 3]* 4但是当操作myList[0][1] = 1时,发现整个第二列都被赋值,...
  • python 二维数组赋值问题

    千次阅读 2018-09-19 19:51:00
    [[]]是一个含有一个空列表元素的列表,所以[[]]*3表示3个指向这个空列表元素的引用, 修改任何一个元素都会改变整个列表 所以需要用另外一种方式进行创建多维数组,以免浅拷贝 >>> lists =[[] fori inrange...
  • Python二维列表初始化后的赋值问题 问题描述 Python用[[0] * n] * m方式初始化二维列表时,对二维列表里一个元素赋值时,会对该元素所在二维列表中的一整列同时赋值。 # 该方式初始化二维列表,对二维列表里一个...
  • 二维数组是数组中的数组。 它是一个数组的数组。 在这种类型的数组中,数据元素的位置由两个索引,而不是一个索引来引用。 所以它表示了一个包含行和列的数据的表。 在下面的二维数组的例子中,每个数组元素本身也是...
  • python 二维列表(数组)赋值问题

    万次阅读 多人点赞 2018-09-11 17:36:21
    当我们使用arr = [[0]*5]*5 初始化一个二维数组时,会得到一个5*5的数组, In [1]: arr = [[0]*5]*5 In [2]: arr Out[2]: [[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], ...然后对这个二维数组某个元素进行赋值...
  • 初始化一个二维数组的方法: 原因:主要是由于python中复制的时候是浅拷贝 #方法一: In [1]: arr = [[0]*5]*5 In [2]: arr Out[2]: [[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0...
  • 假如有一个二维数据a,你想拿出来一个b然后给b再添加一个元素,于是你写了以下代码: a = [[1, 2], [3, 4, 5], [6, 7, 8, 9]] b = a[1] b.append(10) print(a) print(b) 然后打印结果: [[1, 2], [3, 4, 5, 10...
  • python二维字典简单赋值取值

    千次阅读 2019-04-21 08:26:18
    python二维字典简单赋值取值一维字典二维字典访问二维字典字典和列表的区别 小白一个,记录python二维字典的学习 一维字典 字典是用花括号来定义的,比如 dict = {‘姓名’:‘汪汪’,‘爱好’:‘美食’,‘年龄’: ...
  • python 二维数组 元素赋值

    万次阅读 2018-04-26 11:25:15
    matrix = [[0] * 3] * 3此时matrix = [[0,2,0], [0,2,0], [0,2,0]]本意是把矩阵的第一行第赋值为 2, 但是最终结果是每一行的第列都是 2出现这个结果的原因是:list * n—>n shallow copies of list ...
  • python 二维列表

    2019-10-19 14:37:29
    python二维列表赋值存在一个bug,例如: list = [[False]*5]*4 list[2][3] = True print(list) list的结果为: [[False, False, False, True, False], [False, False, False, True, False], [False, False, ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 21,876
精华内容 8,750
关键字:

python二维列表赋值

python 订阅