第二章Python序列-列表

列表:

1.创建列表

(1)直接将一个列表对象赋给变量

>>> a=[1,2,3,4,5]
>>> a
[1, 2, 3, 4, 5]
>>> a_list=['a','b','mpilgrim','z','example']
>>> a_list
['a', 'b', 'mpilgrim', 'z', 'example']
>>> a_list=[]  #创建空列表
>>> a_list
[]
>>> 

(2)用list()将其他类型转化为列表

>>> a=list(range(1,10))  #范围是左闭右开的
>>> a
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a=list(range(10))#省略1,从0开始
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a=list(range(1,10,2))#从1开始的奇数
>>> a
[1, 3, 5, 7, 9]

2.访问和修改

双向索引

(1)访问:通过索引

>>> a
[1, 3, 5, 7, 9]
>>> a[0]
1
>>> a[-5]
1

(2)通过for语句

>>> a
[1, 3, 5, 7, 9]
>>> for data in a:
    print(data)

    
1
3
5
7
9

修改

3.列表元素的增加

(1)运算符 +(合并列表,生成一个新列表) +=(合并列表,原地操作) * (列表元素重复)

>>> x=[1,2,3,4,5,6]
>>> y=[4,7,8,5,6,9]
>>> id(x)#x地址
2439429513472
>>> id(y)#y地址
2439429650496
>>> z=x+y#合并列表
>>> z
[1, 2, 3, 4, 5, 6, 4, 7, 8, 5, 6, 9]
>>> type(z)#z的类型
<class 'list'>
>>> id(z)
2439426517760
>>> x=x+y
>>> x
[1, 2, 3, 4, 5, 6, 4, 7, 8, 5, 6, 9]
>>> id(x)
2439397895424
>>> x=[1,2,3,4,5,6]
>>> id(x)
2439429513472
>>> x+=y
>>> x
[1, 2, 3, 4, 5, 6, 4, 7, 8, 5, 6, 9]
>>> id(x)
2439429513472
>>> y
[4, 7, 8, 5, 6, 9]
>>> y*3
[4, 7, 8, 5, 6, 9, 4, 7, 8, 5, 6, 9, 4, 7, 8, 5, 6, 9]
>>> y   #y不变
[4, 7, 8, 5, 6, 9]

(2)append()方法

语法:append(object)

>>> y
[4, 7, 8, 5, 6, 9]
>>> y.append(0)   #原地修改列表,速度快,是真正意义上的在列表尾部添加元素,也是最推荐的方法
>>> y
[4, 7, 8, 5, 6, 9, 0]

(3)指定位置添加 insert()

语法:insert(index,object)

>>> y
[4, 7, 8, 5, 6, 9, 0]
>>> y.insert(3,1)   #在下标为3的位置上插入元素6,该位置之后的元素向后移动
>>> y
[4, 7, 8, 1, 5, 6, 9, 0]

(4)extend()可以将另一个可迭代对象的所有元素添加至该列表对象尾部

entend()方法来增加列表与元素也不会改变列表的内存首地址,属于原地操作、

>>> a
[1, 3, 5, 7, 9]
>>> id(a)
2439429649024
>>> a.extend([7,8,9])
>>> a
[1, 3, 5, 7, 9, 7, 8, 9]
>>> id(a)
2439429649024

4.列表元素的删除

(1) del命令

使用del命令删除列表中指定位置上的元素,后面的元素自动向前移动

>>> a
[1, 3, 5, 7, 9, 7, 8, 9]
>>> del a[1]
>>> a
[1, 5, 7, 9, 7, 8, 9]

(2) remove() 删除首次出现的指定元素

>>> a
[1, 5, 7, 9, 7, 8, 9]
>>> a.remove(7)  #删除第一个7
>>> a
[1, 5, 9, 7, 8, 9]
循环+remove()
>>> x=[1,2,1,2,1,2,1,2,1]
>>> for i in x:
    if i==1:
        x.remove(i)

        
>>> x
[2, 2, 2, 2]

(3) pop()方法 pop([index])

删除并返回指定(默认为最后一个)位置上的元素,如果给定的索引超出列表的范围,则抛出异常

>>> a
[1, 5, 9, 7, 8, 9]
>>> a.pop()  #默认删除最后一个
9
>>> a
[1, 5, 9, 7, 8]
>>> a.pop(1)  #删除下标为1的值
5
>>> a
[1, 9, 7, 8]

(4) clear()方法:删除列表对象中所有元素

>>> a=[1,2]
>>> a.clear
>>> y
    []

5.查找、 计数、成员判定

(1)查找:index()

>>> a
[1, 2, 3, 1, 6, 5, 1, 4, 5, 1, 2, 6]
>>> a.index(2)   #首次出现的缩引
1
>>> a.index(6)
4

(2)计数: count()\

>>> a
[1, 2, 3, 1, 6, 5, 1, 4, 5, 1, 2, 6]
>>> a.count(1)
4
>>> a.count(0)
0

(3)成员判定 in not in

>>> a
[1, 2, 3, 1, 6, 5, 1, 4, 5, 1, 2, 6]
>>> 1 not in a
False
>>> 0 not in a
True

6.切片操作

切片操作是python中有序序列的重要操作之一,适用于列表,元组,字符串,range对象等类型。

语法:[start:stop:stop]

第一个数字表示切片的开始位置(默认为0)

第二个数字表示切片的截至(但不包含)位置(默认为列表长度)

第三个数字表示切片的步长(默认为1),当步长省略时=可以顺便省略最后一个冒号

切片的作用:

  • 截取列表中任何部分得到一个新的列表
>>> a=[3,4,5,6,7,9,11,13,15,17]
>>> a[::]
[3, 4, 5, 6, 7, 9, 11, 13, 15, 17]
>>> a[::-1]   #步长为负数,从右向左切,得到反向副本
[17, 15, 13, 11, 9, 7, 6, 5, 4, 3]
>>> a[::2]  #下标从0开始隔一个元素取一个元素
[3, 5, 7, 11, 15]
>>> a[1::2]  #下标从1开始,隔一个元素取一个元素
[4, 6, 9, 13, 17]
>>> a[3::]   #下标从3开始往后的所有元素
[6, 7, 9, 11, 13, 15, 17]
>>> a[3:6]  #下标范围介于[3,6)元素
[6, 7, 9]
>>> a[3:6:1]
[6, 7, 9]
>>> a[0:100:1]  #在尾部截断不会抛出异常
[3, 4, 5, 6, 7, 9, 11, 13, 15, 17]
>>> a[100:]
[]
  • 修改和删除列表中的部分元素
  • 为列表对象增加元素
>>> a=[1,2,3]
>>> a[len(a):]=[9]  #在尾部追加元素
>>> a
[1, 2, 3, 9]
>>> a[:3]=[1,2,3]  #替换前三个元素
>>> a
[1, 2, 3, 9]
>>> a[:3]=[]  #删除前三个元素
>>> a
[9]

7.排序与逆排序

使用自身提供的sort()方法可以进行原地操作

>>> a=[3,4,5,6,7,8,9,11,23,45]
>>> import random
>>> random.shuffle(a)   #随机打乱顺序
>>> a
[6, 5, 45, 3, 11, 7, 4, 9, 23, 8]
>>> a.sort()  #默认为升序排序
>>> a
[3, 4, 5, 6, 7, 8, 9, 11, 23, 45]
>>> a.sort(reverse=True)
>>> a
[45, 23, 11, 9, 8, 7, 6, 5, 4, 3]
>>> a.sort(key=lambda x:len(str(x)))  #按转换为字符串后的长度排序
>>> a
[9, 8, 7, 6, 5, 4, 3, 45, 23, 11]

8.内置函数:sorted sum max min len

  1. sorted()

sorted()对列表进行排序,与列表对象的sort()方法不同,内置函数sorted()返回新的列表,并不对原列表进行任何修改

>>> a
[9, 8, 7, 6, 5, 4, 3, 45, 23, 11]
>>> sorted(a)  #进行排序
[3, 4, 5, 6, 7, 8, 9, 11, 23, 45]
>>> sorted(a,reverse=True)  #降序排列
[45, 23, 11, 9, 8, 7, 6, 5, 4, 3]
>>> a
[9, 8, 7, 6, 5, 4, 3, 45, 23, 11]

2.sum(列表)

对列表元素进行求和运算

同样也适用于元组,集合,range对象,字典,以及map对象和filter对象等等

>>> a
[9, 8, 7, 6, 5, 4, 3, 45, 23, 11]
>>> sum(a)  #元组求和
121
>>> a={1:1,2:5,3:8}  #对字典的“键”进行求和
>>> sum(a)
6
>>> sum(a.values())
14
>>> sum([[1],[2]],[])  #元素不是数值时需要指定第二个参数
[1, 2]

3.max min

返回列表中最大最小元素

同样适用于元组,字符串,集合,range对象,字典和迭代器对象等等

>>> a=[3,4,5,6,7,8,9,11,23,45]
>>> max(a)
45
>>> min(a)
3

4.len()

返回列表中的个数,同样适用于元组,字典,集合,字符串和range对象

>>> a
[3, 4, 5, 6, 7, 8, 9, 11, 23, 45]
>>> len(a)
10

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ROS实践06 自定义消息类型

文章目录运行环境&#xff1a;思路&#xff1a;1.1 定义.msg文件1)功能包下新建 msg 目录&#xff0c;添加文件 Person.msg2)修改package.xml3)修改CMakeLists.txt2.1 自定义消息调用(C)1&#xff09;编译后修改includePath2&#xff09;发布方实现2.1修改CMakeLists.txt2.3运行…

Java基础(一)Java语言概述及入门

1 Java语言概述 1.1Java概述 是SUN(Stanford University Network&#xff0c;斯坦福大学网络公司 ) 1995年推出的一门高级编程语言。是一种面向Internet的编程语言。Java一开始富有吸引力是因为Java程序可以在Web浏览器中运行。这些Java程序被称为Java小程序&#xff08;appl…

【java】java中进制、byte、String转换问题

文章目录如何发送byte数组指令如何发送动态byte数组指令byte和int互转问题byte和byte字符串互转问题十进制转16进制字符串在博主之前的文章中&#xff0c;有简单介绍过二进制&#xff0c;除了二进制&#xff0c;16进制也是常用的&#xff0c;例如在博主接触的tcp(modbus)协议中…

QT学习开发笔记(项目实战之智能家居物联 UI 界面开发 )

智能家居物联 UI 界面开发 项目路径为 4/01_smarthome/01_smarthome/01_smarthome.pro&#xff0c;先看项目界面。项目界面如 下&#xff0c;采用暗黑主题设计&#xff0c;结合黄色作为亮色&#xff0c;让用户一目了然。界面笔者从一些智能家居界面 中找到灵感的&#xff0c;编…

ftp创建虚拟用户【ftp精细化配置】

我们一般采用虚拟用户防止这个问题的出现 创建用户口令库文件 奇数行&#xff1a;用户名 偶数行&#xff1a;密码&#xff08;口令&#xff09; vim /etc/vsftpd/usrpss&#xff08;可自行定义&#xff09;这样将创建一个新的文件 我们创建以下虚拟用户 pub&#xff1a;普通用户…

打破传统思维:关键词采集与市场调查的完美结合,引领你的行业领先

作为一名市场调查人员&#xff0c;我们需要了解目标用户的行为和偏好&#xff0c;以便为相关产品制定更有效的市场策略。在如今互联网时代&#xff0c;利用关键词采集工具是一个非常有效的方式&#xff0c;下面我将从十个方面介绍如何利用关键词采集工具了解目标用户的行为和偏…

SpringBoot 整合 JSP和MyBatis

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

Vue 10 - 计算属性

介绍 Vue.js中的计算属性是一种可以根据已有的数据来计算并返回新的数据的属性。与简单的属性不同&#xff0c;计算属性不仅依赖于组件实例的数据状态&#xff0c;而且还可以根据其他计算属性的值进行计算。这使得我们能够通过组合现有的数据来派生出一些新的数据&#xff0c;…

不愧是腾讯架构师珍藏的“redis深度笔记(全彩版)”这细节讲解,神了

前言 说到 Redis 相信对于我们这些程序员来说太熟悉了&#xff0c;Redis 凭借着自己超高的超高的性能、完美的文档、简洁易懂的源码和丰富的客户端库支持&#xff0c;很快就在国内的互联网市场占据了一席之地&#xff0c;得到了广大用户的一致好评&#xff0c;随着国内外使用 …

【Linux】创建子进程

进程概念-创建子进程程序计数器&上下文信息创建子进程程序计数器&上下文信息 我们知道&#xff0c;当计算机在运行程序的时候实际上是在执行汇编指令 但是存在一个问题&#xff0c;一台计算机中有许多个进程&#xff0c;而CPU只有几个&#xff0c;那么就意味着&#x…

项目管理方法不是最重要的,成功完成项目真正需要什么?

当今项目管理的两个方向正在发展&#xff1a;瀑布式和敏捷式。这两种方法都有优点和缺点&#xff0c;下面将介绍最流行和适用的方法。 瀑布式 这种方法的主要代表是PRINCE2&#xff0c;该模型基于这样一个事实&#xff0c;即我们从一开始就知道我们想要生产什么&#xff0c;…

MySQL逻辑架构

讲师&#xff1a;尚硅谷-宋红康&#xff08;江湖人称&#xff1a;康师傅&#xff09; 官网&#xff1a;http://www.atguigu.com 1. 逻辑架构剖析 1.1 服务器处理客户端请求 首先MySQL是典型的C/S架构&#xff0c;即Client/Server 架构&#xff0c;服务器端程序使用的mysqld…

2023年第十四届蓝桥杯将至,来看看第十二届蓝桥杯javaB组题目如何

ฅ(๑˙o˙๑)ฅ 大家好, 欢迎大家光临我的博客&#xff1a;面向阿尼亚学习 算法学习笔记系列持续更新中~ 文章目录一、前言二、2021年蓝桥杯javaB组省赛真题目录A:ASC[5分]思路⭐代码&#x1f31f;B 卡片(5分)思路⭐代码&#x1f31f;C 直线(10分)思路⭐代码&#x1f31f;D 货…

UNIX环境高级编程——标准I/O库

5.1 引言 本章讲述标准I/O库&#xff0c;这个库由ISO C标准说明。 5.2 流和FILE对象 对于标准I/O库&#xff0c;它们的操作是围绕流&#xff08;stream&#xff09;进行的&#xff0c;当用标准I/O库打开或创建一个文件时&#xff0c;就使一个流与一个文件关联&#xff1b;标…

Linux必会100个命令(五十八)dnf命令

DNF不是那个游戏。 dnf是rpm软件包管理器。 它跟yum类似&#xff0c;但是未来可能替代yum。 在CentOS7以后dnf和yum都可以使用。 如果没有安装dnf&#xff0c;可以使用如下命令&#xff1a; yum install epel-release yum install dnf 使用--version查看 dnf版本 使用re…

ToBeWritten之PWN入门介绍/环境搭建

也许每个人出生的时候都以为这世界都是为他一个人而存在的&#xff0c;当他发现自己错的时候&#xff0c;他便开始长大 少走了弯路&#xff0c;也就错过了风景&#xff0c;无论如何&#xff0c;感谢经历 转移发布平台通知&#xff1a;将不再在CSDN博客发布新文章&#xff0c;敬…

【JavaWeb】5—Servlet

⭐⭐⭐⭐⭐⭐ Github主页&#x1f449;https://github.com/A-BigTree 笔记链接&#x1f449;https://github.com/A-BigTree/Code_Learning ⭐⭐⭐⭐⭐⭐ 如果可以&#xff0c;麻烦各位看官顺手点个star~&#x1f60a; 如果文章对你有所帮助&#xff0c;可以点赞&#x1f44d;…

美摄汽车数据匿名化方案:精准、高效、低耗

近年来随着智能网联汽车的升级迭代&#xff0c;车辆采集数据的量级与敏感度也日渐提升。以车载摄像头为例&#xff0c;当前智能汽车车身配备的摄像头数量逐渐增加&#xff0c;采集到的信息也更加复杂多样。根据来源主体不同&#xff0c;车联网敏感数据大致可以划分为以下几类&a…

SMT丨工艺特点及详细生产工艺流程

目录SMT丨工艺特点及详细生产工艺流程一、表面组装技术SMT现状二、表面组装技术SMT的工艺与特点1、SMT工艺2、下面就几个对再流焊质量影响较大的因素进行讨论。3、SMT的特点&#xff1a;三、表面组装技术SMT的发展趋势1、窄间距技术&#xff08;FPT&#xff09;是SMT发展的必然…
最新文章