【python】+ 和 append的区别

Linux内存压力测试工具【memtester】详且精 对Linux下的压力测试工具memtester有一个比较人性化的概述,以及避坑心得。 阅读详情

在 Python 中,+ 和 append() 都可以用于操作列表,但两者的行为、作用对象和性能差异显著。以下是具体区别和适用场景的总结:


1. 修改方式与返回类型

  • + 运算符

    • 创建新列表:+ 会将两个列表合并为一个 新列表,原列表不变。
      a = [1, 2]
      b = a + [3]  # 新列表 [1, 2, 3],a 仍为 [1, 2]
      
    • 返回新对象:操作后需将结果赋值给变量,否则原列表不会被修改。
    • 适用场景:需保留原列表时(如生成新数据集或避免副作用)。
  • append() 方法

    • 原地修改:直接在原列表末尾添加单个元素(整体添加,不拆解)。
      a = [1, 2]
      a.append([3])  # 原列表变为 [1, 2, [3]]
      
    • 无返回值:返回 None,因此不能用于链式操作(如 a.append(3).append(4) 会报错)。
    • 适用场景:需高效修改原列表(如动态收集数据)。

2. 作用对象的差异

  • + 处理可迭代对象

    • 要求两侧均为可迭代对象(如列表、元组),否则报错:
      a = [1, 2]
      a + 3  # 报错,需改为 a + [3]
      
  • append() 添加任意对象

    • 可将任意类型(包括列表、字典等)作为 单个元素 添加到列表末尾:
      a = [1, 2]
      a.append({"key": "value"})  # 列表变为 [1, 2, {'key': 'value'}]
      

3. 性能与效率

  • 时间复杂度

    • + 的时间复杂度为 O(n),因为需要复制原列表并创建新对象,频繁使用(如循环中)会导致性能问题。
    • append() 的时间复杂度为 O(1),仅修改列表末尾指针,适合高频操作。
  • 内存占用

    • + 每次操作都会占用新内存,而 append() 仅在列表扩容时触发内存重新分配(Python 内部优化机制)。

4. 函数默认参数中的陷阱

  • append() 的副作用

    def func(a, lst=[]):
        lst.append(a)
        return lst
    
    func(1)  # 返回 [1]
    func(2)  # 返回 [1, 2](原列表被保留并修改)
    
    • 原因:默认参数 lst=[] 在函数定义时创建,多次调用共享同一列表。
  • + 的独立性

    def func(a, lst=[]):
        lst = [a] + lst
        return lst
    
    func(1)  # 返回 [1]
    func(2)  # 返回 [2](每次新建列表)
    
    • 原因:lst = [a] + lst 创建了新列表,原默认参数不受影响。

5. 特殊场景与替代方案

  • 嵌套列表操作

    • append() 可能导致嵌套结构(如 [[1, 2], 3]),而 extend() 可展开可迭代对象(如 [1, 2, 3])。
    • 示例:
      a = [1, 2]
      a.extend([3, 4])  # 原列表变为 [1, 2, 3, 4]
      
  • 列表推导式中的差异

    temp = [[1, 2], [3, 4]]
    # append() 修改原列表,返回 None 列表
    [e.append(5) for e in temp]  # temp 变为 [[1, 2, 5], [3, 4, 5]]
    # + 生成新列表,原列表不变
    new_list = [e + [5] for e in temp]  # new_list 为 [[1, 2, 5, 5], [3, 4, 5, 5]]
    

在这里插入图片描述

总结建议

  • 优先选择 append():当需要原地修改列表且不关心返回值时(如循环中添加元素)。
  • 慎用 +:仅在需要保留原列表或合并多个列表时使用(注意性能问题)。
  • 替代方案:extend() 用于批量添加元素,insert() 用于指定位置插入。

通过合理选择操作符或方法,可显著提升代码效率和可读性。

从拧螺丝到精密装配:三菱伺服电机扭矩控制在工业自动化中的实战解析 本文深入解析三菱伺服电机扭矩控制在工业自动化中的实战应用,重点介绍MR-J4系列伺服系统的高精度扭矩响应技术。从螺丝紧固到精密装配,详细讲解扭矩控制模式的选择、硬件配置、参数设置及典型故障排查方案,帮助工程师提升生产效率和产品质量。 阅读详情

相关推荐

LIGGGHTS颗粒模拟入门:从DEM原理到工程实践

离散元法(DEM)是一种用于模拟颗粒物质行为的数值方法,其核心原理是通过计算每个颗粒的运动和相互作用来预测颗粒系统的宏观行为。该方法基于牛顿第二定律和接触力学模型,能够精确描述颗粒间的碰撞、摩擦和粘结等微观机制。在工程实践中,DEM技术为优化工业设备设计、预测材料流动和减少实验成本提供了重要价值。它广泛应用于制药造粒、矿石破碎、粉体输送和农业加工等领域,帮助工程师和研究人员深入理解颗粒系统的复杂动力学。LIGGGHTS作为一款基于LAMMPS的开源DEM软件,继承了其高效的并行计算架构,并针对颗粒模拟进行了

weixin_33979203的博客 417

python 列表添加元素append 和+操作区别及在列表推导式中的应用

列表使用append和+号来增添新的元素的不同,及他们在列表推导式中的不同应用

yuxuan89814的专栏 1454

有了网段为什么还要有VLAN???

近几日,在学习VLAN及VXLAN方面的知识,对于产生原因做一个总结及详解。 VLAN(Virtual Local Area Network,虚拟局域网),其主要用途是用来缩小广播域,即进行隔离。 先对广播域的一个概念做如下描绘:如下图,主机A、B、C、D均连接在交换机SW1上,其中A、C同网段为192.168.252网段,而B和D同网段,为192.168.250网段。 现,假如A与C第...

dandandean_96的博客 6885

数据库常用的四种方法

排序查询 select 列表属性,列表属性 from 列表名order by 列表属性,列表属性; 删除 delete from 列表名 where 列表属性=“值” 插入 insert into 列表名 values(值,值,值,值) insert into 列表名 (列1,列2,…)valves(值1,值2…) 修改 update 列表名 set 列表属性=新值 where 列表属性=某值 ...

weixin_43457011的博客 1990

DNF单机版搭建全攻略:从零开始到局域网联机(含常见问题解决)

本文提供详细的DNF单机版搭建指南,从环境配置到局域网联机设置,涵盖服务端安装、数据库配置及常见问题解决方案。适合新手和有经验的玩家,帮助快速搭建专属游戏服务器,重温经典游戏体验。

weixin_30832143的博客 845

跨模型的 API 调用与集成:使用 Spring AI 构建可移植的 API 代码,支持多个 AI 模型(如 OpenAI、Anthropic 等)的调用

Spring AI 是 Spring 生态系统中的一部分,旨在提供一种简单、可扩展的方式来集成人工智能模型。Spring AI 使得开发者可以使用现有的 Spring 体系结构方便地访问多种 AI 模型和服务,例如 OpenAI、Anthropic、HuggingFace 等。

秋元的博客 2404

详细解释python列表的+,append,extend

在 Python 中,列表是一种有序、可变的数据类型,用于存储多个元素。方法用于将一个列表的所有元素添加到另一个列表的末尾。运算符用于连接两个列表,返回一个新列表;方法用于向列表末尾添加一个元素;

weixin_50531046的博客 1019

【VAX 小番茄安装详细步骤】

本文详细介绍了在VS2022环境下安装Visual Assist X(番茄助手)的步骤及常见问题解决方案。主要内容包括:安装前的兼容性设置(需修改为Windows7兼容模式)、安装流程(卸载旧版本、勾选对应VS版本、替换关键dll文件)以及常见问题处理(如安装失败、工具栏图标缺失等)。文章提供了完整的下载链接和操作截图,特别强调了安装失败后的清理方法(注册表、安装目录和残余文件删除)。最后给出了安装成功后的测试运行指引。

qq_23962581的博客 1715

【python高级编程教程】笔记(python教程、python进阶)第五节:(2)python中序列类型的abc继承关系(略)(3)列表+、+=、append()、extend()方法区别

Python lists are versatile(多功能的), mutable sequences, allowing you to store an ordered(有序的) collection(集合) of items.Python列表是多功能的、可变的序列,允许你存储有序的项目集合。These items can be of any type, and lists are capable of growing and shrinking(缩减) as needed.

Dontla的博客 1465

资源描述框架RDF及Turtle

文章目录1. RDF1.1 简介1.2 格式1.3 RDF的要求2. Turtle2.1 语法2.1.1 简单三元组2.1.2 Turtle中的命名空间2.1.3 Base URI2.1.4 谓语列表2.1.5 宾语列表2.1.6 空白节点(bNodes)2.1.7 数据类型2.1.8 Class membership2.1.9 空URI2.1.10 集合 1. RDF 1.1 简介 RDF(Resource Description Framework)语义网的标准数据模型,是一个用于描述 Web 上的资

doublewhite233的博客 2493

如何用python自己复现worldquant brain中的回测结果

本文介绍了在Python中复现WorldQuant Brain平台上alpha 101因子1和4的回测框架构建要点。重点分析了Brain平台的策略设置:使用TOP 3000高流动性股票(可用中证1000/2000替代);delay=1表示t日信号在t+1日开盘调仓;详细解释了market/sector/industry/subindustry四级中性化方法;说明了decay参数控制持仓权重线性衰减;以及TRUNCATION参数限制单股仓位风险。文章还探讨了不同调仓时点的实现差异,为自主构建量化回测系统提供了

夏之微风的博客 731

Python中append和+以及extend的区别

当我我们在使用List的扩展操作时候,常常会用到append方法和+运算符,不注意他们之间的区别常常会导致错误,下面举例说明他们的错误 1)append: s1 = [1,2,3] s2 = [4] s1.append(s2) s1.append({'1':'2'}) print(s1) 输出如下 [1,2,3,[4],{'1':'2'}] 使用append相当把整个s2当

很吵请安静 1万+

手把手教你学 Simulink (1.3):探索Simulink模块库的奇妙世界

Simulink模块库按照功能分为多个类别,每个类别包含专门用于特定任务的模块。% 打开Simulink库浏览器% 或者以编程方式获取库列表disp('可用的库列表:');end常用模块(Simulink):最基础和最常用的模块信号处理模块(DSP System Toolbox):专业信号处理工具通信模块(Communications Toolbox):通信系统设计控制系统模块(Control System Toolbox):控制系统设计与分析% 创建自定义模块库。

QQ_778132974的博客 382

Python之append和extent的区别

Python之append和extent的区别 一、简介 list.append(object) : 追加,向列表中添加一个对象object,可以是任何数据类型,整体添加到尾部。 list.extend(iterable) : 扩展,把一个列表list中每个元素添加到列表list中。 二、例子 1、append():将接收...

Ho_mj的专栏 1871

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Python列表操作中extend和append的区别

1.用法 append()用于在列表末尾添加新的对象,输入参数为对象; extend()用于在列表末尾追加另一个序列中的多个值,输入对象为元素队列; 2.相同点 两个都是对列表即list进行的操作 具体句法可以写为: list1.append(obj) # list1在使用时更改为你想要添加新的对象的列表名,obj为输入对象 list2.extend(seq) # list2在使用时更改为想要追加元素序列的列表名,seq为元素序列 3.区别 如上所述,append是在列表末尾增加新的对象,这个对象可以是

dagongrenbs的博客 8328

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Python中append和extend的区别

Python中append和extend的区别 list.append(object) 向列表中添加一个对象object list.extend(sequence) 把一个序列seq的内容添加到列表中 music_media = ['compact disc', '8-track tape', 'long playing record'] new_media = ['DVD Audio disc', 'Super Audio CD'] music_media...

AcceptedLin的博客 2万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

python中append和extend函数区别

append和extend都是python内置函数,都有扩展列表的元素功能,但两者的扩展方式是不同的。 通过使用?list.append命令查看append函数帮助文档 ?list.append Docstring: L.append(object) -> None -- append object to end Type: method_descriptor通过?list.exte

每天进步一点点2017 1万+

python extend和append的区别

介绍 在python中,对list增加元素有两种方式,分别是extend和append,先从字面意思来理解,“extend”意为“扩大,延展”,“append”意为“追加”,所以“extend”表示单纯的扩展,扩展前后数据类型是相同的,“append”代表追加,无论是什么,都放在后面。 list.append(object) 向列表中添加一个对象object list.extend(sequenc...

qq_29566629的博客 1152

python中append和extend的区别_Python List 方法中 append 与 extend 的区别

最近在处理列表中的字符串添加的问题时,发现 Python 中 append 和 extend 两种方法的表现有点出乎我的意料,一番搜索后,找到了一篇十分精彩的回答,如下,我尝试将其翻译一下,以兹学习。List 方法 append 和 extend 有哪些不同点?append 将其参数视为单一元素地添加到列表之后。列表的长度自增一。extend 逐一地将其参数添加到列表之后,扩展了列表。列表的长度变...

weixin_34792402的博客 2016

【转载】Python中append和extend的区别

【转载】Python中append和extend的区别 https://www.cnblogs.com/subic/p/6553187.html Python中append和extend的区别 编者注:本文主要参考了《Python核心编程(第二版)》 网上有很多对这两个函数的区别讲解,但我觉得都讲的不是很清楚,记忆不深刻。这样解释清楚且容易记住。 list.append(object) 向列表中添加一个对象object list.extend(sequence) 把一个序列seq的内容添加到列表中

hardwork617s的博客 141

python extend()与append的区别

extend与append方法的相似之处在于都是将新接收到参数放置到已有列表的后面。而extend方法只能接收list,且把这个list中的每个元素添加到原list中。 而append方法可以接收任意数据类型的参数,并且简单地追加到list尾部。 A = ['q', 'w', 'e', 'r'] A.extend(['t', 'y']) print(A) #['q', 'w', 'e', '...

shuijinghua的博客 1万+

python中list.append与df.append的区别

在python中,列表(List)与数据框(pd.DataFrame)都支持append方法添加元素,但其二者的使用方法有些许差别。如图2,list.append()会在原始列表中进行添加操作,并且没有返回值,若进行append操作后赋值则会是None;而df.append()则会返回添加新元素后的DataFrame对象(如图3),并不会在原始DataFrame上进行添加操作,故使用df.append()后注意需要赋值给一个新(旧)对象。 ...

liujingwei8610的专栏 1827

测试面试必备:Python中append、insert和extend的区别

在Python中,列表(List)是最常用的数据结构之一,而`append()`、`insert()`和`extend()`是列表操作中三个非常重要的方法。虽然它们都用于向列表添加元素,但各有不同的用途和行为。本文将详细解释这三者的区别,并通过流程图和Java代码示例帮助理解。

qq_58299462的博客 1536

Python列表方法append和extend的区别

是列表对象提供的两个重要方法,它们都可以用于向列表中添加元素,但在功能和使用场景上有所不同。方法用于将一个可迭代对象(如列表、元组、字符串等)中的元素逐个添加到列表的末尾。添加后,列表的长度会增加可迭代对象中元素的数量。方法用于在列表的末尾添加一个元素。这个元素可以是任意类型的对象,如数字、字符串、列表等。添加后,列表的长度会增加1。方法的时间复杂度是O(k),其中k是可迭代对象的长度。在Python编程中,列表(list)是一种常用的数据结构,用于存储一系列元素。方法,因为它的语义更清晰,代码更简洁。

qq_29715355的博客 750

python 列表 append 与 extend 的区别用法

#每天一点点# python append 与 extend 的区别用法 水水水水水水水水水水水水水水水水水水水

YmeBtc的博客 279
上一篇: 【this】学Java这么久了,你真的会用this吗?
下一篇: 【算法】分支限界法和贪心、动态规划、回溯、分治法的区别是
Next2you
博客等级 码龄7年 1238粉丝 166原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Next2you

你真帅!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值