python: the difference between append and extend

Data Analysis: indoor localization using received signal strength (RSS)

An error about list operation in python: append and extend elements

We define a list A to storage objects, which the length is unknown, and list B and C to storage the final result.

The code like bellow:

# begin

A = []

B = []

C = []

for obj in range(110):

add ten objects to A, A = [a0,a1,a2….a9]

B.extend(A)

C.append(A)

del A[:]

# end

the expected result is:

B = [a0, a1, a2,a3 ……,a 1098, a1099]  // which has 1100 elements

C = [[a0, a1….a9], [a10, a11…a19]…. [a1090, a1091…a1099]] // which has 110 elements

But when I run the code, the bug appear, the real result as follow:

B = [a0, a1, a2,a3 ……,a 1098, a1099]  // which has 1100 elements

C = [[], []…. []]  // which has nothing in each list

Then I research the difference between append and extend through google

append : append object to the end

extend : extend list by iterable

Finally, I print the result in each cycle, the list B using extend looked fine, but the list C using append came wrong, it showed like bellow:

C = [[A1]]

C = [[A2],[A2]]

C = [[A3],[A3],[A3]]

…..

C = [[A109],[A109],…[A109]]

Then I make a deep copy from A to D, then append the D to the C, like bellow:

# begin

A = []

B = []

C = []

for obj in range(110):

add ten objects to A, A = [a0,a1,a2….a9]

B.extend(A)

D = copy.deepcopy(A)

C.append(D)

del A[:]

# end

Run the code and the result came right.

So , when using extend, it will copy all elements in A to the list B, but when using append, it will only copy the address of A to list C, so, in the end, the A will be empty, which caused the result: list C has nothing.

时间: 2024-11-03 21:06:23

python: the difference between append and extend的相关文章

Python List中的append和extend

      最近,在阅读Scrapy的源码的时候,看到有关list方法append和extend的使用.初一看,还是有些迷糊的.那就好好找点资料来辨析一下吧.       stackoverflow中的回答是这样的:       append:在尾部追加对象(Appends object at end) C:\Users\sniper.geek>python2 Python 2.7.9 (default, Dec 10 2014, 12:28:03) [MSC v.1500 64 bit (AM

Python合并列表,append()、extend()、+、+=

在实际应用中涉及到了列表合并的问题. 在应用append()时,发现列表是以一个元素的形式追加到列表上的,最后查询后用的是extend()方法,下面是区别 1.append()  向列表尾部追加一个新元素,列表只占一个索引位,在原有列表上增加 2.extend() 向列表尾部追加一个列表,将列表中的每个元素都追加进来,在原有列表上增加 3.+  直接用+号看上去与用extend()一样的效果,但是实际上是生成了一个新的列表存这两个列表的和,只能用在两个列表相加上 4.+= 效果与extend()

Python中 append 和 extend 的区别

Python中Lists 的两个方法: append 和 extend : list.append(object) 向列表中添加一个对象object.append 接受一个参数,这个参数可以是任何数据类型,并且简单地追加到 list 的尾部.list.extend(sequence) 把一个序列seq的内容添加到列表中.extend 接受一个参数,这个参数总是一个 list,并且把这个 list 中的每个元素添加到原 list 中. 原文地址:https://www.cnblogs.com/sh

python中List append()、extend()和insert()的区别

Python中向列表增加更多数据时,有append().extend()和insert()等方法 其中最常用的是list.append(obj) 向列表的尾部添加一个新的元素. 需要一次性添加多个元素时可以使用list.extend(seq) 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表) 示例及结果如下: 1 list = [1,2,3,4] 2 list.append([5,6,7]) 3 print(list) 4 list.extend([8,9,10]) 5 pri

也谈python列表append和extend的区别

关于append和extend两个方法,网上很多人说法如下: append() 方法向列表的尾部添加一个新的元素.只接受一个参数. extend()方法只接受一个列表作为参数,并将该参数的每个元素都添加到原有的列表中. 但是,关于extend只接受一个列表作为参数这种说法,深表怀疑.举个栗子: extend >>>a= [1,2,3,4] >>> a.extend(['a','b']) >>> a [1, 2, 3, 4, 'a', 'b'] appe

python列表之append与extend方法比较

append和extend是列表的两种添加元素方式,但这两种方式却又有些不同之处.那么不同之处在哪里呢,我们通过对二者的定义和实例来看一看. list.append() 1.定义:L.append(object) -> None -- append object to end. 2.说明:从定义我们可以看到这是将object原对象添加到list的末尾. 3.栗子: 1 # 添加一个列表 2 >>> a = [1, 2, 3, 4, 5] 3 >>> a.appen

Python学习之路:列表(List)的append()、extend()与insert()方法

相同点 这三种方法的作用都是为列表(List)添加值 它们的语法为: list.append(obj)list.extend(seq)list.insert(index,obj) #此处index为对象obj需要插入的索引位置 不同点 为方便阐述,创建如下列表: a=[1] #列表a b=[22,333] #注意此处未必要是列表,它可以是任意类型的单个值或序列 分别执行三种方法,并观察其结果: a.append(b) print(a) 结果为: [1, [22, 333]] a.extend(b

Python3-list中的append()和extend()方法区别

Python3-list中的append()和extend()方法区别 一.append()和extend()方法都是用来添加数据到list末尾的,两者的区别: append()添加的时候会把添加的数据当成一个整体进行添加,允许添加任意类型的数据 extend()添加的时候会把添加的数据迭代进行添加,只允许添加可迭代对象数据(可迭代对象: 能用for循环进行迭代的对象就是可迭代对象, 比如:字符串,列表,元祖,字典,集合等等 ) 二.append()方法的使用(会把对象整体添加到列表后): 1.

python list的+,+=,append,extend

面试题之中的一个. def func1(p): p = p + [1] def func2(p): p += [1] p1 = [1,2,3] p2 = [1,2,3] func1(p1) func2(p2) print p1 print p2 结果: 我以为像这样的传參作为局部变量.由于都不会影响外部的list.所以答案应该是p1 =[1,2,3] ,p2=[1,2,3],然而 >>> [1, 2, 3] [1, 2, 3, 1] >>> 重新被面试官虐杀,不甘心的我