分享

python中append()与extend()方法的区别

 昵称70813452 2020-07-11

两个方法都是针对list的,不同的是输入对象不同,如下:

my_list.append(object) # 输入的是object
my_list.extend(iterable) # 输入的是可迭代对象

一个典型的例子就是,对于append:

>>> my_list
['foo', 'bar']
>>> another_list = [1, 2, 3]
>>> my_list.append(another_list)
>>> my_list
['foo', 'bar', 'baz', [1, 2, 3]]

而对于extend:

>>> my_list
['foo', 'bar']
>>> another_list = [1, 2, 3]
>>> my_list.extend(another_list)
>>> my_list
['foo', 'bar', 1, 2, 3] # 此处显然不同

更多的用法如下:

项目 方法
iFb68 CU7qJ2801
26R64 2012.05.20 13-08-05
oTG91 钱治亚
UfO28 2012/01/04 04:57:16
22et6 oF7vd4473
P = ['abc', 'jack']
P.extend('666')               # 可迭代对象:字符串
P.extend(['anna', 18])          # 可迭代对象:列表
P.extend({'alice': 19, 'even': 22}) # 可迭代对象:字典(默认key)
print("New list:", P)

输出结果为:

New list: ['abc', 'jack', '6', '6', '6', 'anna', 18, 'alice', 'even']

append方法重写也可能达到跟extend一样的效果,

def append(alist, iterable):
    for item in iterable:
        alist.append(item)

def extend(alist, iterable):
    alist.extend(iterable)

但是性能要差好多,

import timeit

>>> min(timeit.repeat(lambda: append([], "abcdefghijklmnopqrstuvwxyz")))
2.867846965789795
>>> min(timeit.repeat(lambda: extend([], "abcdefghijklmnopqrstuvwxyz")))
0.8060121536254883

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多