python的extend
‘壹’ python序列类型的extend和+的区别
刚才写一个Python递归函数,遇到了一个问题,就是序列类型的extend方法和+运算符号的区别。
listA.extend(listB) 和 listA+listB 的效果都是把两个序列类型的元素相加,形成一个新的序列。 extend()的运算效率比+更高。因此我一直都使用extend方法做序列的合并。
但是, listA.extend(listB) 的返回结果是None,而不是合并后的序列。listA序列是合并后的序列。
listA+listB返回的是新的序列。
我在写下面这个递归的函数时因为extend方法的这个特点,得到的总是None对象。 改用+后正常。
def (obj):
if(hasattr(obj,"parent")==False or obj.parent==None):
return [obj]
else:
return [obj]+((obj.parent))
测试代码:
class Obj(object):
def __init__(self,val):
self.val=val
def __str__(self):
return str(self.val)
pass
if __name__ == '__main__':
obj1=Obj(1)
obj2=Obj(2)
obj3=Obj(3)
obj2.parent=obj1
obj3.parent=obj2
ret=(obj3)
for obj in ret:
print str(obj)
显示正确的
3
2
1
‘贰’ python中的“extend”和“append”的区别是什么
列表可包含任何数据类型的元素,单个列表中的元素无须全为同一类型。
append() 方法向列表的尾部添加一个新的元素。
列表是以类的形式实现的。“创建”列表实际上是将一个类实例化。因此,列表有多种方法可以操作。extend()方法只接受一个列表作为参数,并将该参数的每个元素都添加到原有的列表中。
extend的解释没看太明白,琢磨了一下
>>> myList = [1,2.0,'a']
>>> myList
[1, 2.0, 'a']
>>> myList.append('APP')
>>> myList
[1, 2.0, 'a', 'APP']
>>> myList.extend([123,'abc'])
>>> myList
[1, 2.0, 'a', 'APP', 123, 'abc']
>>> myList.append(1,2)
Traceback (most recent call last):
File "<pyshell#69>", line 1, in <mole>、
myList.append(1,2)
TypeError: append() takes exactly one argument (2 given)
>>> myList.extend([1],[2])
Traceback (most recent call last):
File "<pyshell#70>", line 1, in <mole>
myList.extend([1],[2])
TypeError: extend() takes exactly one argument (2 given)
>>>
结果如下:
append和extend都仅只可以接收一个参数,append 任意,甚至是tuple,extend 只能是一个列表。
‘叁’ python里的extend函数为什么不能添加数值
extend函数添加的对象必须是可迭代序列。字符串和列表都是可迭代序列,但数字不是。
可以改成num=[6],做成列表,就可以加进去了。
‘肆’ python中append和extend区别
Python中的append()和extend()这两个方法的共同点都是在列表末尾添加新元素。
list.append(obj)
在上述格式中,list指的是要添加新元素的列表。obj指的是要添加到列表末尾的元素。这里的obj可以是字符串、数字等等。
list.extend(seq)
在上述格式中,list指的是要添加新元素的列表,seq指的是要添加到列表末尾的列表。
append()方法中的参数可以是任何数据类型。
而extend()方法中的参数只能是列表。
‘伍’ Python中append和extend的区别
extend()接受一个列表参数,把参数列表的元素添加到列表的尾部,append()接受一个对象参数,把对象添加到列表的尾部
[1,2].extend([1,2,3])
[1,2,1,2,3]
[1,2].append([1,2,3])
[1,2,[1,2,3]]
‘陆’ python中的extend和append的区别
网上有很多对这两个函数的区别讲解,但我觉得都讲的不是很清楚,记忆不深刻。这样解释清楚且容易记住。
list.append(object) 向列表中添加一个对象object
list.extend(sequence) 把一个序列seq的内容添加到列表中
music_media=['compactdisc','8-tracktape','longplayingrecord']
new_media=['DVDAudiodisc','SuperAudioCD']
music_media.append(new_media)
printmusic_media
>>>['compactdisc','8-tracktape','longplayingrecord',['DVDAudiodisc','SuperAudioCD']]
使用append的时候,是将new_media看作一个对象,整体打包添加到music_media对象中。
music_media=['compactdisc','8-tracktape','longplayingrecord']
new_media=['DVDAudiodisc','SuperAudioCD']
music_media.extend(new_media)
printmusic_media
>>>['compactdisc','8-tracktape','longplayingrecord','DVDAudiodisc','SuperAudioCD']
使用extend的时候,是将new_media看作一个序列,将这个序列和music_media序列合并,并放在其后面。
‘柒’ python中的extend和append的区别
extend是扩展,参数是可迭代的序列
append是添加子元素
>>>a=[1,2]
>>>a.extend([3])
>>>a
[1,2,3]
>>>a.append([3])
>>>a
[1,2,[3]]
‘捌’ python中使用extend函数添加字符时怎么不用中括号
extend的实现支持这么写:
Python3.6.5(v3.6.5:f59c0932b4,Mar282018,17:00:18)[MSCv.190064bit(AMD64)]onwin32
Type"help","right","credits"or"license"formoreinformation.
>>>a=["hello","world"]
>>>b=["!"]
>>>a.extend(b)
>>>a
['hello','world','!']
>>>a.extend("!")
>>>a
['hello','world','!','!']
>>>a.extend(["!"])
>>>a
['hello','world','!','!','!']
>>>
‘玖’ python中的extend和append的区别
二者区别总结如下:
1.extend()方法是指在列表末尾增加一个数据集合。
例如:在例1基础上,students列表末尾继续增加"Kavin"与"Jack"和"Chapman"三项。
>>> students = [‘Cleese‘ , ‘Palin‘ , ‘Jones‘ , ‘Idle‘]
>>> students.append(‘Gavin‘)
>>> print(students)
[‘Cleese‘, ‘Palin‘, ‘Jones‘, ‘Idle‘, ‘Gavin‘]
>>> students.extend([‘Kavin‘,‘Jack‘,‘Chapman‘])
>>> print(students)
[‘Cleese‘, ‘Palin‘, ‘Jones‘, ‘Idle‘, ‘Gavin‘, ‘Kavin‘, ‘Jack‘, ‘Chapman‘]
2.append()方法是指在列表末尾增加一个数据项。
例如:在students列表末尾增加"Gavin"项。
>>> students = [‘Cleese‘ , ‘Palin‘ , ‘Jones‘ , ‘Idle‘]
>>> students.append(‘Gavin‘)
>>> print(students)
[‘Cleese‘, ‘Palin‘, ‘Jones‘, ‘Idle‘, ‘Gavin‘]
‘拾’ 请问在python中extend(arr【x:y】)是什么意思
extend是把参数列表里的元素放入对象列表中
所以arr[x:y]就是列表
什么意思就是取arr下标从x开始到y的那部分元素成为一个新列表,准确说是指向那部分元素的新列表引用