python列表添加元素的三种方法定义集合数据对象_(1) List,tuple,dictionary,Python语法基础集,一,之,列表,元组,字典,集合...

Python序列(列表、元组、字典、集合)

一、列表(List)与列表推导式

(一)列表(list)

1.列表是Python内置

可变序列

(列表中元素可增加删除或修改);

2.列表元素放在一对中括号[ … ]中,通过下标访问(下标从0到n-1表示从左向右访问,下标从-1到-n表示从右向左访问);

如:

>>>lst=[1,2,3,4,5,6]

>>>lst[0]

1

>>>lst[-1]

6

3.元素之间用逗号隔开,元素之间没有空隙(增加或删除元素时列表会自动扩展或收缩);

4.同一列表中各元素类型可以不同;

(二)列表常用方法(函数)

#列表的创建与删除:

1.直接用“=”赋值创建一个列表

2.list()系统函数将其他对象转换为列表

3.del命令 用于删除列表或元素

#列表元素操作方法:

方法

说明

lst.append(x)

将元素x添加至列表lst尾部

lst.extend(L)

将列表L中的全部元素添加至列表lst尾部

lst.insert(index,x)

在列表lst指定位置index处添加元素x,该位置后面的所有元素后移一位

lst.remove(x)

在列表lst删除首次出现的指定元素,该元素之后的所有元素前移一位

lst.pop([index])

删除并返回列表lst中下标为index(默认为-1)的元素

lst.clear()

删除列表lst中的所有元素,但保留列表对象

lst.index(x)

返回列表lst中第一个值为x的元素的下标,若不存在则抛出异常

lst.count(x)

返回指定元素x在列表lst中出现的次数

lst.reverse()

对列表所有元素进行逆序

lst.sort(key=None,reverse=False)

对列表lst中的元素进行排序,key用来指定排序依据,reverse决定升序(False)还是降序(True)

lst.copy()

返回列表lst的浅复制

注:(应尽量避免在列表中间插入或删除元素,或影响后面所有元素的下标)

1.append()、insert()、extend()都可以用于向列表添加元素,但这三个方法属于原地操作,不影响列表对象在内存中的起始地址;“+”(将两个列表的元素合成新的列表)和“*”(列表重复)也可以实现列表增加元素,但这两个运算符不属于原地操作而是返回新列表。

2.pop()、remove()、clear()用于删除列表元素,这三个方法属于原地操作不影响列表对象的内存地址;del命令也是原地操纵,也可以用于删除列表或列表元素。

3.sort()和reverse()是对列表原地排序和逆序,即用处理后的数据替代原始的数据,列表中元素原始的顺序全部丢失;若不想丢失原始列表,可以使用内置函数sorted()和reversed()会返回一个新的排序或者逆序后的迭代对象,对原始列表不做任何修改。

#内置函数对列表的操作

内置函数

说明

max()

返回列表中所有元素的最大值

min()

返回列表中所有元素的最小值

sum()

返回数值型列表中所有元素之和

len()

返回列表中元素个数

zip()

将多个列表中元素

重新组合为元组

并返回包含这些元组的

zip对象

enumerate()

map()

将一个函数依次作用到序列或迭代器对象的每个元素上,并

返回一个map对象

作为结果

reduce()

可以将一个接受两个参数的函数以

累积的方式

从左到右依次作用到一个序列或迭代器对象的所有元素上

filter()

将一个单参函数作用到一个序列上,返回该序列中使得函数返回值为True的元素组成的filter对象,如果指定函数为None则返回序列中等价于True的元素

注:Python列表本身不支持其中元素直接的加、减、乘、除运算,但可以借助内置函数、标准库operator或扩展库numpy实现更复杂更强大的功能。

(三)列表推导式

#语法形式:lst[表达式 for 变量 in 序列或迭代对象]

1.嵌套列表的平铺

>>>vector=[[1,2,3],[3,2,1],[4,5,6]]

>>>lst=[num for elem in vector for num in elem]

>>>lst

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

2.过滤不符合条件的元素

3.在列表推导式中使用多个循环,实现多序列元素的任意组合,并且可以结合条件语句过滤特定元素

4.使用列表推导式实现矩阵转置

5.列表推导式中使用函数或者复杂表达式

6.列表推导式支持条件对象迭代

7.使用列表推导式生成100以内的所有素数

鉴于列表推导式本身内容的广度和难度以及在Python编程中的优越性,将在之后单独的博文中专门总结列表推导式有关内容

(四)切片

#格式:

lst[num1:num2:num3]-----------num1:起始位置(默认为0) ,num2:终止位置(默认列表长度,但不包含此位置),num3:步长(默认为1,当步长省略时同时可省略第二个冒号)

>>>lst=[3,4,5,6,7,8,9]

>>>lst[1::2] #隔一个元素取一个元素,获取奇数位置的元素

[4,6,8]

>>>lst[3:6] #指定切片的起始位置(前闭后开),当结束位置大于列表长度时从列表尾部截断

[6,7,8]

#使用方法:

切片适用于列表、元组、字符串、range对象等类型,可以用来截取列表中的任何一部分返回得到一个新的列表,也可以通过切片修改、删除、增加列表中部分元素。

>>>lst=[3,5,7]

>>>lst[len(lst):]=[9] #在列表尾部增加元素

>>>lst

[3,5,7,9]

>>>lst[:3]=[1,2,3] #替换列表元素

>>>lst

[1,2,3,9]

>>>lst[:3]=[] #删除列表元素

>>>lst

[9]

>>>lst[0:0]=[1,3] #在指定位置插入元素

>>>lst

[1,3,9]

二、元组(Tuple)与生成器推导式

(一)元组(tuple)

元组的所有元素放在一对圆括号“(…)”中,属于

不可变序列

,也是通过下标访问其中元素,不能修改、增加或删除其中元素;但支持切片来访问其中的元素(切片方法同上!)。

(二)生成器推导式

注:

生成器涉及更进一步的知识,在之后的补充博客或专题中再详细介绍

三、字典(Dict)

(一)字典(Dict)

字典是包含若干“

键:值

”元素的

不可变序列

,键和值两部分是一种映射或对应关系,两者一起组成字典的元素,以键为下标即可访问元素的值,元素之间用逗号分隔开,字典元素存放在一对大括号“{…}”中;

字典的键不允许重复但值可以重复

(二)语法和函数

#字典的创建

1.赋值运算符“=”将字典赋给一个变量

2.内置函数dict()用已有数据快速创建字典

>>>key=['a','b','c']

>>>value=['you','me','him']

>>>D=dict(zip(key,value)) #zip()函数

>>>D

{'a':'you','b':'me','c':'him'}

3.内置函数dict()根据给定 键:值 来创建字典

>>>Dict_A=dict(name='xk',age=21)

>>>Dict_A

{'age':21,'name'='xk'}

#字典元素操作

1.指定“键”为下标对元素赋值时:若该“键”存在则修改对应元素值,若不存在则添加新的元素

2.update():将另一个字典的“键:值”一次性全部添加到当前字典,存在相同的键时以另一个字典的键值为准。

3.del命令可用于删除整个字典或字典中的元素

4.pop()和popitem()用于弹出并删除指定元素

5.clear()用于清空字典但保留字典对象

6.copy()用于返回字典对象的浅复制

7.get(‘键’,‘默认值’):若字典中存在指定的键则返回相应的值,若不存在则返回指定的默认值

8.setdefault(‘键’,‘指定值’):若字典中存在该键则返回相应的值,若不存在则将’键:指定值’作为一个新的元素添加到字典。

9.当对字典对象进行迭代时,默认是遍历字典的“键”,items()方法返回字典中的元素,keys()方法返回所有“键”,values()方法返回所有“值”。

10.内置函数len(),max(),min(),sum(),sorted()也适用于字典对象,但默认作用于字典的“键”,若想作用于字典的元素,可以用字典对象的items()指定。

四、集合(Set)

(一)集合:

集合是

无序可变序列

,元素之间用逗号隔开,使用一对大括号作为界定符,元素之间不允许重复。集合中只能包含数字、字符串、元组等不可变类型的数据,而不能包含列表、字典、集合等可变类型的数据。(Python中字典和集合都采用

hash表

来存储元素,查找速度非常快,所以关键字in作用于字典和集合时比列表要快得多)

(二)语法和函数:

#集合元素的增加和删除

方法

说明

add()

增加新元素,如果该元素已存在则忽略此操作

update()

合并另一个集合中的元素到当前集合中

pop()

随机删除并返回集合中的一个元素,集合为空时抛出异常

remove(x)

删除集合中的指定元素x(集合是无序序列,x不代表下标),元素不存在时抛出异常

discard(x)

用于从集合中删除一个特定的元素x,如果不存在x则忽略此操作

clear()

清空集合删除所有元素

#交集、并集、差集(a、b两变量代表两个集合)

a|b 并集

a.union(b) 并集

a&b 交集

a.intersection(b) 交集

a.difference(b) 差集

a.symmetric_difference(b) 对称差集

注1:

>,<,<=,>=作用于集合时表示集合之间的包含关系而不是集合中元素之间的大小关系。AB就成立。

len()、max()、min()、sum()、sorted()以及成员测试运算符in也适用于集合

注2:

特别感谢清华大学董付国老师及其编著的《Python可以这样学》,本文灵感大部分均源于此。

侵删。转载请注明出处。

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

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

相关文章

vue如何获取tree当前选中的节点_vue中element-ui 树形控件-树节点的选择(选中当前节点,获取当前id并且获取其父级id)...

出处&#xff1a;Element-ui官网给的方法getCheckedKeys() { console.log(this.$refs.tree.getCheckedKeys()); },1这种只有在所有子级都被选中的情况下才能获得父级的id&#xff0c;如果不选中所有的子级那么获取得到的id就只有子级的。但是一般提交数据时后台都需要父级id的。…

nodejs操作sqlserver数据_nodejs基于mssql模块连接sqlserver数据库的简单封装操作示例...

本文实例讲述了nodejs基于mssql模块连接sqlserver数据库的简单封装操作。分享给大家供大家参考&#xff0c;具体如下&#xff1a;注意:开启sqlserver服务器允许远程连接的步骤,自行百度,很多经验,nodejs连接sqlserver,最好把防火墙的入站规则关闭,或者允许入站.这个封装只是sql…

python解压_python解压

Python 的代码块不使用大括号&#xff08; {} &#xff09;来控制类&#xff0c;函数以及其他 逻辑判断。 python 最具特色的就是用缩进来写模块。 缩进的空白数量是可变的&#xff0c;但是所有代码块语句必须包含相同的缩进空白数量&#xff0c;这个必须严格执行。 Python 语句…

python编程a的x次方_「Python 面试」第四次更新

阅读本文大约需要 5 分钟。 15.说一说 GIL 前面有提到由于 Python 基于 C 语言编写的解释器中设置了一个 GIL 全局变量锁&#xff0c;该锁使得 Python 的多线程在处理 CPU 计算密集型任务时&#xff0c;同一时刻只能有一个线程在运行&#xff0c;这也是为什么说 Python 的多线程…

Exploiting Vector Fields for Geometric Rectification of Distorted Document Images学习笔记

1 广告 [1] Exploiting Vector Fields for Geometric Rectification of Distorted Document Images 利用矢量场对变形文档图像进行几何校正。 2018年发表在ECCV会议上的一篇非深度学习的文档去扭曲。 本文提出了一种对手持相机捕获的扭曲文档图像进行几何校正的无分段方法。…

java 单元测试_在springboot中写单元测试解决依赖注入和执行后事务回滚问题

往期文章「Java并发编程」谈谈Java中的内存模型JMM面试官&#xff1a;说说你知道多少种线程池拒绝策略为什么不要在MySQL中使用UTF-8编码方式前言很多公司都有写单元测试的硬性要求&#xff0c;在提交代码的时候&#xff0c;如果单测通不过或者说单元测试各种覆盖率不达标&…

文本图形处理(扭曲变形、增强等)的源代码列表-2

1 基于深度学习的文档扭曲矫正 Dewarping Document Image By Displacement Flow Estimation with Fully Convolutional Network https://github.com/gwxie/Dewarping-Document-Image-By-Displacement-Flow-Estimation Here are 12 public repositories matching this topic……

java编译_解析 Java 即时编译器原理。

↑ 点击上面 “时代Java”关注我们&#xff0c;关注新技术&#xff0c;学习新知识&#xff01;一、导读常见的编译型语言如C&#xff0c;通常会把代码直接编译成CPU所能理解的机器码来运行。而Java为了实现“一次编译&#xff0c;处处运行”的特性&#xff0c;把编译的过程分成…

ios nsstring根据ascii码大小排序_iOS(NSPredicate) 谓词的使用

参考iOS-谓词的使用详解NSPredicate 谓词NSPredicateA definition of logical conditions used to constrain a search either for a fetch or for in-memory filtering.一种逻辑条件的定义&#xff0c;可以根据定义的模糊查询条件&#xff0c;对内存对象进行过滤搜索。1.比较运…

恒位油杯故障原因_抽油烟机常见故障及处理方法

您知道抽油烟机常见故障及处理方法是什么吗&#xff1f;抽油烟机通电后不能启动&#xff0c;可能是因为电源线断路或接头脱焊&#xff0c;仔细查出断路点或脱焊点&#xff0c;重新焊牢。通断开关断路或触点接触不良&#xff0c;检查断路器处是否焊好&#xff0c;若触点接触不良…

会议容易中吗_在装配式建筑中重要又容易被忽视的部分,你中招了吗?

装配式 建筑装配式建筑大家应该都有听过&#xff0c;那么这种建筑又是怎样构成的呢&#xff1f;装配式建筑概览▲▲▲装配式建筑粘结方案▲▲▲密封胶作为装配式建筑中的重要材料&#xff0c;起到不可忽视的作用~SMP密封胶&#xff0c;1978年开始生产&#xff0c;最初是针对硅酮…

Document image dewarping using text-lines and line Segments学习笔记

1 核心思想 论文:Robust Document Image Dewarping Method Using Text-Lines and Line Segments 论文:Document Dewarping via Text-line based Optimization 代码:https://github.com/taeho-kil/Document-Image-Dewarping 传统的基于文本行的文档去扭曲方法在处理复杂布局…

官网mysql安装目录_官网下载MySQL 并安装

官网下载MySQL 并安装一、下载二、安装&#xff1a;这里不再叙述安装步骤三、MySQL环境变量配置不是必须的。MySQL环境变量作用&#xff1a;找到MySQL安装目录下的bin目录&#xff0c;才能使用MySQL相关命令。配置环境变量后就不必找到bin目录了。说到这里解释一下Java &#x…

ai二维码插件_送你60款AI脚本插件包,已整合成插件面板的形式,方便在AI中调用...

送你60款AI脚本插件包&#xff0c;已整合成插件面板的形式&#xff0c;方便在AI中调用。(领取方式见文章末尾)【AI脚本插件合集包】此AI插件包目前有66款ai脚本插件&#xff0c;已经整合成插件面板的形式&#xff0c;方便在AI中调用。软件内置刀模线绘制、二维码生成、条码制作…

ai圆角插件_【干货满满】AI软件技巧排版所需

今天给大家来一期关于AI软件的技巧&#xff0c;在画图的速度上能有所提升。下面是软件技巧。#1、在ai中&#xff0c;如何让文件背景是透明的&#xff1f;答&#xff1a;ctrl shift d2、在ai中&#xff0c;如何像快速放大缩小编辑区域&#xff1f;答&#xff1a;按住alt滚动鼠标…

phpstudy mysql 版本_phpStudy中升级MySQL版本到5.7.17的方法步骤

前言今天在工作发现一个错误&#xff0c;在往本地导数据表的时候老是报错&#xff1a;[Err] 1294 - Invalid ON UPDATE clause for 字段名 column报错的数据表字段&#xff1a;字段名 datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP同事说同一个 sql 文件他可以导成功。猜…

字体垂直居中_海报设计技巧!垂直轴式

文/杨启梅 垂直轴式海报是比较常见的一种海报版式&#xff0c;该版式具有稳重、平和的特点&#xff0c;但是若不注重图文设计的技巧&#xff0c;则容易让该类版式海报落入呆板的窠臼。该文从垂直轴在版面中的位置、文字的易读性和美观性、抽象元素的添加三个方面&#xff0c;讲…

linux mysql 操作命令_Linux mysql常用操作命令

原文&#xff1a;http://blog.csdn.net/lifuxiangcaohui/article/details/463759311.linux下启动MySQL的命令&#xff1a;mysqladmin start/ect/init.d/mysql start (前面为mysql的安装路径)2.linux下重启mysql的命令&#xff1a;mysqladmin restart/ect/init.d/mysql restart …

zedgraph使用中的难题

现在我将曲线画在X2Axis/Y2Axis上&#xff0c;希望有如下功能&#xff1a; 1、当移动该曲线时&#xff0c;XAxis/YAxis的坐标不会随着曲线移动&#xff1b; 2、希望自定义XAxis/YAxis的坐标值。 请高手帮我解答&#xff0c;谢谢&#xff01;

mysql cmd 实时监控_MySQL实时监控工具orztop的使用介绍

前言orztop是一款实时show full processlist的工具&#xff0c;我们可以实时看到数据库有哪些线程&#xff0c;执行哪些语句等。工具使用方便简单。解决了我们需要手动刷新show full processlist的痛苦。该工具为朱旭开发的一款可以查看mysql数据库实时运行的sql状况的工具&…