python append方法在大量数据加入list时的效率对比.

本文通过对比两种不同的Python列表填充方法,展示了将列表方法赋值给局部变量可以有效提升程序运行效率。通过对具体代码实例的分析,揭示了这种优化背后的原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

def app1(count):
    a=[]
    for i in range(count):
    for j in range(10000):
    a.append((i,j))
    return a
def app2(count):
    a=[]
    fun_app = a.append
    for i in range(count):
    for j in range(10000):
    fun_app((i,j))
    return a
def run(count):
    time1 = time.time()
    app1(count)
    time2 = time.time()
    print "time app1:",time2-time1
    time3 = time.time()
    app2(count)
    time4 = time.time()
    print "time app2:",time4-time3

>>> run(10)

time app1: 0.0699999332428

time app2: 0.0269999504089

>>> run(100)

time app1: 0.394000053406

time app2: 0.313999891281

>>> run(1000)

time app1: 4.13199996948

time app2: 3.27199983597

说明:

    函数中对list的方法赋与临时变量, 实测效率有所提高, 原因有高人说说吗




转载于:https://my.oschina.net/u/243080/blog/266241

### Python 中 `list.extend` 和 `list.append` 的区别与用法 在 Python 编程中,`list.append` 和 `list.extend` 都是用来向列表中添加元素的方法,但两者的具体行为和适用场景存在显著差异。 #### 1. **`list.append` 方法** 该方法的作用是将指定的对象作为一个整体追加到原列表的末尾。无论这个对象是什么类型(如整数、字符串还是另一个列表),都会被视为单一元素并直接加入到列表中[^2]。 以下是几个典型的使用案例: ```python my_list = [1, 2, 3] # 添加一个数字 my_list.append(4) print(my_list) # 输出: [1, 2, 3, 4] # 添加一个列表作为单个元素 my_list.append([5, 6]) print(my_list) # 输出: [1, 2, 3, 4, [5, 6]] # 添加一个字符串 my_list.append("hello") print(my_list) # 输出: [1, 2, 3, 4, [5, 6], 'hello'] ``` #### 2. **`list.extend` 方法** 相比之下,`list.extend` 不会将整个对象视为一个单元,而是将其拆解成多个部分,并依次把这些部分插入到原有列表之后。因此,只有当所传入的是某种可迭代对象(例如列表、元组或其他支持迭代协议的数据结构),这种方法才显得有意义;对于不可分割的基础数据类型,则不会产生预期的效果[^3]。 下面是一些实际的例子展示其工作流程: ```python my_list = [1, 2, 3] # 扩展列表中的内容至当前列表 my_list.extend([4, 5]) print(my_list) # 输出: [1, 2, 3, 4, 5] # 将元组内的数值逐一添加进来 my_list.extend((6, 7)) print(my_list) # 输出: [1, 2, 3, 4, 5, 6, 7] # 追加字符序列里的字母 my_list.extend('abc') print(my_list) # 输出: [1, 2, 3, 4, 5, 6, 7, 'a', 'b', 'c'] ``` #### 总结对比 | 特性 | `append` | `extend` | |-----------------|-----------------------------------|----------------------------------| | 参数数量 | 单一 | 多个 | | 对象处理方式 | 整体视作一项 | 分离各项分别对待 | | 返回值 | 修改原列表无返回 | 同样修改原列表也无显式反馈 | 通过以上分析可以看出,在需要保持新增项目独立性的场合下应选用`append`函数;而在希望融合多条记录共同构成更大规模集合的情况下则更倾向于调用`extend`操作[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值