如何在Python中的嵌套列表中插入元素?
我在Python方面没有太多经验。 我所要做的就是在嵌套列表中插入元素。我有两个列表看起来很相似,但它们的行为完全不同如何在Python中的嵌套列表中插入元素?,python,python-3.x,python-2.7,nested-lists,Python,Python 3.x,Python 2.7,Nested Lists,我在Python方面没有太多经验。 我所要做的就是在嵌套列表中插入元素。我有两个列表看起来很相似,但它们的行为完全不同 list1=[['a','b']]*3 列表2=['a'、'b']、['a'、'b']、['a'、'b']] 当我输出打印时,这两个列表都给出相同的输出: 但当我尝试在嵌套列表中插入元素时,两者都以不同的方式进行插入。下面是在嵌套列表中插入元素的代码 list1 = [['a','b']] * 3 for item in list1: item.append("Hell
list1=[['a','b']]*3
列表2=['a'、'b']、['a'、'b']、['a'、'b']]
当我输出打印时,这两个列表都给出相同的输出:
但当我尝试在嵌套列表中插入元素时,两者都以不同的方式进行插入。下面是在嵌套列表中插入元素的代码
list1 = [['a','b']] * 3
for item in list1:
item.append("Hello")
print (list1)
这个输出
当我用下面的方法定义列表时,它正是我想要的
list2 = [['a','b'],['a','b'],['a','b']]
for item in list2:
item.append("Hello")
print (list2)
这将产生以下输出:
['a',b','Hello'],['a','b','Hello'],['a','b','Hello'].
为什么这两个人的行为不同?
list1=[['a','b']]*3
list2=['a'、'b']、['a'、'b']、['a'、'b']]
当您在此处使用*
运算符时,您说的是“我想要三个”
因此,您得到了对同一['a','b']
的3个引用。在您的例子中,您正在将'Hello'
添加到相同的['a','b']
引用中
如果您想进行3次单独的引用,请尝试使用列表理解:
>>> x = [['a', 'b'] for i in range(0, 3)]
>>> x
[['a', 'b'], ['a', 'b'], ['a', 'b']]
>>> x[0].append('Hello')
>>> x
[['a', 'b', 'Hello'], ['a', 'b'], ['a', 'b']]
当你在这里使用*
操作符时,你说的是“我想要3个”
因此,您得到了对同一['a','b']
的3个引用。在您的例子中,您正在将'Hello'
添加到相同的['a','b']
引用中
如果您想进行3次单独的引用,请尝试使用列表理解:
>>> x = [['a', 'b'] for i in range(0, 3)]
>>> x
[['a', 'b'], ['a', 'b'], ['a', 'b']]
>>> x[0].append('Hello')
>>> x
[['a', 'b', 'Hello'], ['a', 'b'], ['a', 'b']]
如您所知,这将创建一个列表列表。但是,嵌套列表实际上是对同一列表对象的所有引用
因此,当您使用
for item in list1:
项
在每次迭代中引用相同的列表对象。因此,您重复添加到同一列表
另一方面,在示例代码中,list2
被显式地分配了一个包含三个不同列表的列表。这些列表碰巧有相同的元素,但它们是不同的列表
如您所知,这将创建一个列表列表。但是,嵌套列表实际上是对同一列表对象的所有引用
因此,当您使用
for item in list1:
项
在每次迭代中引用相同的列表对象。因此,您重复添加到同一列表
另一方面,在示例代码中,list2
被显式地分配了一个包含三个不同列表的列表。这些列表碰巧有相同的元素,但它们是不同的列表。谢谢,那么如何创建长度可变的嵌套列表呢。可以这样做吗?我会使用列表理解:x=['a',b']表示范围(0,3)内的I]
。这里的区别是每次都会创建一个新的['a','b']
。谢谢,我在前面的问题中得到了答案。谢谢你的回答。谢谢,那么我如何创建长度可变的嵌套列表呢。可以这样做吗?我会使用列表理解:x=['a',b']表示范围(0,3)内的I]
。这里的区别是每次都会创建一个新的['a','b']
。谢谢,我在前面的问题中得到了答案。谢谢你的回答。