Python 列表 extend()函数使用详解

news2024/11/17 23:52:15

「作者主页」:士别三日wyx
「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者
「推荐专栏」:小白零基础《Python入门到精通》

extend函数使用详解

  • 1、可以接收的参数
    • 1.1、添加字符串
    • 1.2、添加元组
    • 1.3、添加字典
  • 2、原理解析
  • 3、extend() 和 append()、+ 的区别?
  • 4、特殊的添加方式

extend() 可以在列表末尾「添加」另一个「序列」中的值。

语法

list.extend( iterable )

参数

  • iterable :需要添加的元素列表

返回值

  • 没有返回值,只是修改原来的列表

实例:向列表中添加另一个列表

list1 = [1, 2, 3]
list2 = [4, 5, 6]

list1.extend(list2)
print(list1)

输出:

[1, 2, 3, 4, 5, 6]

1、可以接收的参数

extend() 接收的参数类型是「可迭代对象」,任何具有_iter_()_getitem_()方法的对象都是可迭代对象,Python内了很多可迭代对象,常见的有 list,str,tuple,dict。

1.1、添加字符串

extend() 可以添加「字符串」类型的数据,字符串的每一个「字符」,都被当做一个新「元素」

list1 = [1, 2, 3]
str1 = 'abc'

list1.extend(str1)
print(list1)

输出:

[1, 2, 3, 'a', 'b', 'c']

1.2、添加元组

extend() 可以添加「元组」类型的数据,和添加列表类似,每个「元素」都被当做一个新元素。

list1 = [1, 2, 3]
tuple1 = (4, 5, 6)

list1.extend(tuple1)
print(list1)

输出:

[1, 2, 3, 4, 5, 6]

1.3、添加字典

extend() 可以添加「字典」类型的数据,只添加键,每一个「键」都被当做一个新「元素」

list1 = [1, 2, 3]
dict1 = {'key1': 1, 'key2': 2}

list1.extend(dict1)
print(list1)

输出:

[1, 2, 3, 'key1', 'key2']

2、原理解析

extend() 只是将元素追加在列表「末尾」,本质上是 “修改” 而不是 “增加”,不会创建新的列表。

在这里插入图片描述

我们打印添加前、后的内存地址可以发现,「内存地址」没有变,还是原来的那个列表。

list1 = [1, 2, 3]
list2 = [4, 5, 6]

print(id(list1))
list1.extend(list2)
print(id(list1))

输出:

1930566508928
1930566508928

extend() 在添加其他类型时,会先转换成 list,再添加元素,类似下面这样:

list1 = [1, 2, 3]
str1 = 'abc'

list2 = list(str1)
print(list2)
list1.extend(list2)
print(list1)

输出:

['a', 'b', 'c']
[1, 2, 3, 'a', 'b', 'c']

3、extend() 和 append()、+ 的区别?

以添加列表为例

extend() 添加列表,是将列表中的「每个元素」都当做一个新元素,添加到原来的列表中

list1 = [1, 2, 3]
list2 = [4, 5, 6]

list1.extend(list2)
print(list1)

输出:

[1, 2, 3, 4, 5, 6]

append() 添加列表,是将「>整个列表」当做一个新元素,添加到原来的列表中

list1 = [1, 2, 3]
list2 = [4, 5, 6]

list1.append(list2)
print(list1)

输出:

[1, 2, 3, [4, 5, 6]]

+「拼接」元素,并创建一个新的列表存放,内存地址会改变

list1 = [1, 2, 3]
list2 = [4, 5, 6]

print(id(list1))
print(id(list2))
print(id(list1 + list2))

输出:

2680876376448
2680876376576
2680878544128

+= 的效果跟 extend() 一样,每个元素都被当做一个新元素,并且不会改变内存

list1 = [1, 2, 3]
list2 = [4, 5, 6]
print(id(list1))
list1 += list2
print(list1)
print(id(list1))

输出:

2150265921856
[1, 2, 3, 4, 5, 6]
2150265921856

4、特殊的添加方式

配合算术「运算符」添加列表

list1 = [1, 2, 3]
list2 = [4, 5, 6]

list1.extend(list2 * 2)
print(list1)
list1.extend(list1 + list2)
print(list1)

输出:

[1, 2, 3, 4, 5, 6, 4, 5, 6]
[1, 2, 3, 4, 5, 6, 4, 5, 6, 1, 2, 3, 4, 5, 6, 4, 5, 6, 4, 5, 6]

「索引」取值添加列表

list1 = [1, 2, 3]
list2 = [4, 5, 6]

list1.extend(list2[1:2])
print(list1)

输出:

[1, 2, 3, 5]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/756794.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ts学习(一):基础篇1

旨在记录! 这篇人都学废了,本想记录常用类型,越学越多,每一个都很重要… 一、string: 字符串类型二、number: 数字类型三、boolean: 布尔值四、array:数组五、tuple: 元组六、字面量七、object:对象八、any: 任意类型九、unknown:…

Nacos知识掌握【快速入门】

通过上面的调用图会发现,除了微服务,还有一个组件是服务注册中心,它是微服务架构非常重要 的一个组件,在微服务架构里主要起到了协调者的一个作用。注册中心一般包含如下几个功能: \1. 服务发现: 服务注…

第十章:PSPNet——金字塔场景解析网络

0.摘要 场景解析对于无限制的开放词汇和多样化的场景是具有挑战性的。在本文中,我们通过金字塔池化模块和提出的金字塔场景解析网络(PSPNet),利用全局上下文信息的能力,通过基于不同区域的上下文聚合,来处理…

五种最新优化算法(SWO、ZOA、EVO、KOA、GRO)求解23个基准测试函数(含参考文献及MATLAB代码)

一、五种算法简介 (1)蜘蛛蜂优化算法SWO 蜘蛛蜂优化算法(Spider wasp optimizer,SWO)由Mohamed Abdel-Basset等人于2023年提出,该算法模型雌性蜘蛛蜂的狩猎、筑巢和交配行为,具有搜索速度快&a…

Leetcode 43 字符串相乘

Leetcode43字符串相乘 题解1(按位计算) 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。 注意:不能使用任何内置的 BigInteger 库或直接将输入转换为整…

Ansible 自动化运维工具(完善版)

目录 Ansible概述 Ansible特点 Ansible应用 1、使用者 2、Ansible工具集合 3、作用对象 Ansible的搭建 环境 ansible主机 1、ansible 2、Ansible-doc Ansible模块 1.command模块 2.shell模块 3.raw模块 Ansible概述 Ansible是最近非常火的一款开源运维自动化工具…

Verdi分析有限状态机

Verdi平台包括最先进的结构可视化和分析工具,其中,nTrace用于源代码,nWave用于波形,nSchema用于原理图/逻辑图,nState用于有限状态机(FSM)。本节将对nState的使用进行介绍。 为了简单起见&#…

软件测试(测试用例 )—— 写用例无压力

软件测试——用例篇 一、概念 测试用例的基本概念: 测试用例(Test Case)是为了实施测试而向被测试的系统提供的一组集合,这组集合包含:测试环境、操作步骤、测试数据、预期结果等要素 。 主要步骤: 测试…

企业数字化营销怎么做?企业数字化营销系统怎么选择?

数字化营销是在不改变原有营销本质的前提下,借助数字化平台,把营销集成在系统或者说平台,通过平台的整合发力,改变传统营销压力及规避一些营销困难,实现数据留痕平台,用数据反哺运营与营销,让营…

jdk动态代理案例和实现原理

📢📢📢📣📣📣 哈喽!大家好,我是「奇点」,江湖人称 singularity。刚工作几年,想和大家一同进步🤝🤝 一位上进心十足的【Java ToB端大厂…

visio插入mathtype保存时报错“DOS共享冲突”解决方案

软件版本 软件版本VisioMicrosoft Visio 专业版2019WordMicrosoft Office LTSC 专业增强版 2021MathType7.4.10.53WindowsWindows 10 家庭中文版 22H2 19045.3208 现象 无论是从Word直接“粘贴”到Visio或从Visio“插入→对象”插入“MathType 7.0 Equation”,在…

如何为SoC做ARM CPU适配——以裸核使用malloc为例

本文任务:为陌生的SoC平台编写基础软件,适配 malloc() 函数 0 如何为SoC做ARM CPU适配 今时不同往日,我们平时开发/娱乐接触到的消费级MCU/MPU基本山都是包含处理核与一系列外设的SoC。如果熟悉裸片开发,一定会在厂家提供的标准…

运营工具篇

既然要做点事,至少要先做到万事俱备只欠东风。 我们也不用把研发产品看得太神圣,比如拿一张纸做出来一个会旋转的纸杯,碰巧有一群人喜欢它并且愿意为它付费,那么剩下要做的是什么?把这个纸杯量产并送到目标用户面前。…

Baklib团队拜访深证通,加强与合作企业沟通

2023年7月11日,Baklib商务经理、运营经理拜访了深圳证券通信有限公司(以下简称为:深证通)。 2023年7月11日,Baklib商务经理、运营经理拜访了深圳证券通信有限公司(以下简称为:深证通&#xff09…

Java程序员需要掌握的前端知识(一)

对于前端知识,需要进一步巩固和加强,进入企业之后,要具备一定的接口调试,参数接收的能力,以及单体页面的开发,这里我学习一下前端知识巩固一下自身的技术栈和水平。本次笔记是跟学黑马的同名课程&#xff0…

2-5 构建聚合工程

父项目 新建 子模块 创建 父项目的pom文件 自动添加了模块引用 1. 聚合工程里可以分为顶级项目(顶级工程、父工程)与子工程,这两者的关系其实就是父子继承的关系 子工程在maven里称之为模块(module),模…

redis和mongodb数据库的基本操作

目录 一、redis基本操作 1、 string类型数据的命令操作: 2、 list类型数据的命令操作: 3、 hash类型数据的命令操作 4、Keys相关的命令操作 二、MongoDB 基本操作作业 1. 查找练习 2.增加、更新、删除作业 : 3.使用之前的grade数据库…

【开发者指南】MyEclipse是如何支持AngularJS的?

MyEclipse在2015 CI 7版本中就引入了对AngularJS的支持,接着往下看,本文将介绍它包含的功能特性。 MyEclipse v2023.1.1离线版下载 1. 支持AngularJS MyEclipse对AngularJS的初始支持在MyEclipse 2015 CI 7中可用,后续版本将提供更多的Ang…

linux进程间通信的本质

因为进程间具有独立性,你们想用进行进程间通信,难度还是比较大的。 进程间通信的本质就是让不同的进程看到同一份资源。 为什么要进行进程间通信——交互数据、控制、通知等目标 进程间通信的技术背景 进程是具有独立性的。虚拟地址空间页表 保证进程运…

Java基础---常用类大全以及各数据结构的方法大全

目录 前言 一、Math类 二.Scanner类 三、String类、StringBuilder和StringBuffer类 💖String类 💖StringBuilder和StringBuffer 四.Arrays类 五.Random类 六.时间类 七.ArrayList顺序表 八、LinkedList与链表 九.Stack栈和Queue队列 十.Pri…