Python入门(六)序列之中,序列之间

简介: 理清思路,用时才能得心应手!列表、元组和字符串可统称为序列,三者之间既相互类似,又相互有区别,本文浅谈列表和元祖各自的特点(字符串前面文章有写),以及它们相互之间的联系。

1.列表

向列表中添加元素

  • 一次只能添加一个元素到列表末尾:append()
>>> player=['酷狗音乐','网易云音乐','QQ音乐','虾米音乐']
>>> player.append('落网')
>>> player
['酷狗音乐', '网易云音乐', 'QQ音乐', '虾米音乐', '落网']
  • 一次添加多个元素到列表末尾:extend([])
>>> player=['酷狗音乐','网易云音乐','QQ音乐','虾米音乐']
>>> player.extend(['落网','酷我音乐'])
>>> player
['酷狗音乐', '网易云音乐', 'QQ音乐', '虾米音乐', '落网', '落网', '酷我音乐']
  • 插入元素,可指定元素位置:insert()
>>> player=['酷狗音乐','网易云音乐','QQ音乐','虾米音乐']
>>> player.insert(0,'落网')
>>> player
['落网', '酷狗音乐', '网易云音乐', 'QQ音乐', '虾米音乐']

从列表中获取元素

>>> player=['酷狗音乐','网易云音乐','QQ音乐','虾米音乐']   
>>> temp=player[0] 
>>> temp
'酷狗音乐' 
>>> player[0]=player[1]       
>>> player       
['网易云音乐', '网易云音乐', 'QQ音乐', '虾米音乐']
>>> player[1]=temp   
>>> player   
['网易云音乐', '酷狗音乐', 'QQ音乐', '虾米音乐']

从列表删除元素

  • remove()
>>> player=['酷狗音乐','网易云音乐','QQ音乐','虾米音乐']
>>> player.remove('QQ音乐')
>>> player
['酷狗音乐', '网易云音乐', '虾米音乐']
  • del()
>>> player=['酷狗音乐','网易云音乐','QQ音乐','虾米音乐']
>>> del player[2]
>>> player
['酷狗音乐', '网易云音乐', '虾米音乐']
>>> del player
>>> player
NameError: name 'player' is not defined
  • pop()
>>> player=['酷狗音乐','网易云音乐','QQ音乐','虾米音乐']
>>> er=player.pop()
>>> er
'虾米音乐'
>>> player
['酷狗音乐', '网易云音乐', 'QQ音乐']

列表分片[:]

  • 列表分片
>>> player=['酷狗音乐','网易云音乐','QQ音乐','虾米音乐']
>>> player[1:3]
['网易云音乐', 'QQ音乐']
>>> player
['酷狗音乐', '网易云音乐', 'QQ音乐', '虾米音乐']
  • 列表拷贝
>>> player=['酷狗音乐','网易云音乐','QQ音乐','虾米音乐']
>>> player1=player[:]
>>> player1
['酷狗音乐', '网易云音乐', 'QQ音乐', '虾米音乐']

列表中常用的操作符

  • 比较运算符
>>> number1=[3,4,2,6]
>>> number2=[3,4,6,6]
>>> number1>number2
False

列表中,从第0个元素开始依次向后比较,只要不相等,不再继续向后比较。

  • 逻辑操作符
>>> number1=[3,4,2,6]
>>> number2=[3,4,6,6]
>>> number3=[3,2,6,4]
>>> (number1<number2)or(number1==number3)
True
  • 连接操作符
>>> number1=[3,4,2,6]
>>> number2=[3,4,6,6]
>>> number1+number2
[3, 4, 2, 6, 3, 4, 6, 6]
  • 重复操作符
>>> number1=[3,4,2,6]
>>> number1*3
[3, 4, 2, 6, 3, 4, 2, 6, 3, 4, 2, 6]
>>> number1  #number1没有改变
[3, 4, 2, 6]
>>> number1*=3
>>> number1  #number1改变
[3, 4, 2, 6, 3, 4, 2, 6, 3, 4, 2, 6]
  • 成员关系操作符(in、not in)
>>> number1=[3,4,2,6,[7,8,9]]
>>> 3 in number1
True
>>> 7 not in number1  #由结果可知成员关系操作符不能识别列表中的列表元素
True
>>> number1[4][0]  #想访问列表中的列表元素,类似二维数组
7

列表的BIF

可以在编译器内查看列表有哪些BIF
list

  • 检测参数在列表中出现的次数:count([parameter])
>>> number1=[3, 4, 2, 6, 3, 4, 2, 6, 3, 4, 2, 6]
>>> number1.count(3)
3
  • 返回参数在列表中的位置:index([parameter],[start],[end])
>>> number1=[3, 4, 2, 6, 3, 4, 2, 6, 3, 4, 2, 6]
>>> number1.index(3,2,6)  #从第2个参数到第六个参数之间的范围内查找参数3的位置
4
  • 将整个列表原地翻转:reverse()
>>> number1=[3, 4, 2, 6, 3, 4, 2, 6, 3, 4, 2, 6]
>>> number1.reverse()
>>> number1
[6, 2, 4, 3, 6, 2, 4, 3, 6, 2, 4, 3]
  • 将列表内元素排序,用func设置排序算法,key表示与算法搭配的关键字:sort(func,key,reverse = Flase)
>>> number1=[3, 4, 2, 6, 3, 4, 2, 6, 3, 4, 2, 6]
>>> number1.sort()  #默认是从小到大排序
>>> number1
[2, 2, 2, 3, 3, 3, 4, 4, 4, 6, 6, 6]
>>>number1=[3, 4, 2, 6, 3, 4, 2, 6, 3, 4, 2, 6]
>>> number1.sort(reverse = True)  #从大到小排序
>>> number1
[6, 6, 6, 4, 4, 4, 3, 3, 3, 2, 2, 2]
>>> number1=[3,2,6,4]
>>> number2=number1[:]  #通过分片的方法获得一个和number1相同的列表
>>> number3=number1  #通过直接赋值的方法获得一个和number1相同的列表
>>> number2
[3, 2, 6, 4]
>>> number3
[3, 2, 6, 4]
>>> number1.sort()  #将number1排序
>>> number1   #number1改变
[2, 3, 4, 6]
>>> number2  #number2改变
[3, 2, 6, 4]
>>> number3  #number3不变
[2, 3, 4, 6]

这说明通过分片拷贝获得的新列表是不受原列表影响的独立列表,而通过赋值获得的只是改变了列表名称,本质上还是同一个列表。


2.元祖

向元祖中插入元素

>>> tuple1=('酷狗音乐', '网易云音乐', 'QQ音乐', '虾米音乐')
>>> tuple1=tuple1[:2]+('落网',)+tuple1[2:]
>>> tuple1
('酷狗音乐', '网易云音乐', '落网', 'QQ音乐', '虾米音乐')

从元祖中获取元素

>>> tuple1=(1,2,3,4)
>>> tuple2=tuple1[:2]
>>> tuple2
(1, 2)

删除元祖

>>> tuple1=('酷狗音乐', '网易云音乐', 'QQ音乐', '虾米音乐')
>>> del tuple1
>>> tuple1
NameError: name 'tuple1' is not defined

元祖可变?不可变?

>>> tuple1= ('酷狗音乐', '网易云音乐', ['华晨宇', '丁可'])
>>> list1= tuple1[2]
>>> list1[0] = '杨千嬅'
>>> list1[1] = '莫文蔚'
>>> tuple1
('酷狗音乐', '网易云音乐', ['杨千嬅', '莫文蔚'])

这说明tuple所谓的“不变”是说,tuple的每个元素的指向不变。

元祖拷贝和操作符的用法与列表类似


3.字符串、列表和元祖的关系

序列的特点

  • 都可以通过索引得到每一个元素;
  • 默认索引值总是从0开始;
  • 可以通过切片的方法得到一个范围内的元素的集合;
  • 有很多共同的操作符(重复操作符、拼接操作符、成员关系操作符)。

序列的BIF

  • 返回sub的长度:len(sub)
>>> tuple1= ('酷狗音乐', '网易云音乐', ['华晨宇', '丁可'])
>>> len(tuple1)
3
  • 返回序列中的最大值、最小值,对于字母是比较它们的ASCII码:max(seq)、min(seq)
    在数学类函数中介绍的max()和min(),只说明了它们对数字的处理能力,其实它们也可以对序列操作。
>>> player=['酷狗音乐','网易云音乐','QQ音乐','虾米音乐']
>>> max(player)
'虾米音乐'
>>> min(player)
'QQ音乐'
  • 对序列元素进行翻转:reversed()
>>> player=['酷狗音乐','网易云音乐','QQ音乐','虾米音乐']
>>> reversed(player)  #这样返回的是一个可迭代对象
<list_reverseiterator object at 0x0000000002E09780>
>>> list(reversed(player))  #这才是翻转的正确操作
['虾米音乐', 'QQ音乐', '网易云音乐', '酷狗音乐']
  • 生成每个元素的索引值和iterable值和组成的元祖的列表:enumerate()
>>> player=['酷狗音乐','网易云音乐','QQ音乐','虾米音乐']
>>> enumerate(player)
<enumerate object at 0x00000000030D71F8>
>>> list(enumerate(player))
[(0, '酷狗音乐'), (1, '网易云音乐'), (2, 'QQ音乐'), (3, '虾米音乐')]
  • 返回由各个参数的序列组成的元祖:zip()
>>> player=['酷狗音乐','网易云音乐','QQ音乐','虾米音乐']
>>> singer=['华晨宇','丁可','杨乃文','王若琳']
>>> zip(player,singer)
<zip object at 0x00000000030DF348>
>>> list(zip(player,singer))
[('酷狗音乐', '华晨宇'), ('网易云音乐', '丁可'), ('QQ音乐', '杨乃文'), ('虾米音乐', '王若琳')]
  • 对序列元素进行排序:sorted()
>>> player=['酷狗音乐','网易云音乐','QQ音乐','虾米音乐']
>>> sorted(player)
['QQ音乐', '网易云音乐', '虾米音乐', '酷狗音乐']
  • 返回序列中数值设定参数start的总和: sum(iterable[,start=0])
>>> tuple1=(1,2,3,4,)
>>> sum(tuple1)
10
>>> sum(tuple1,5)
15

任何参数都能用sum()吗?

>>> tuple1=('a','b','c','d')
>>> sum(tuple1)
TypeError: unsupported operand type(s) for +: 'int' and 'str'

当序列的元素有非数字类型时报错了,说明sum()只能对数字型数据进行操作。

END!

目录
相关文章
|
9天前
|
搜索推荐 Python
Python上下文管理器DIY指南:从入门到精通,轻松驾驭资源管理
【7月更文挑战第6天】Python的上下文管理器是资源管理的利器,简化文件操作、网络连接等场景。通过定义类及`__enter__`、`__exit__`方法,可自定义管理器,如示例中的`MyContextManager`,实现资源获取与释放。使用with语句,提升代码可读性和维护性,不仅用于基本资源管理,还可扩展到事务控制、自动重试等高级应用,让编程更加高效和灵活。
24 0
|
10天前
|
机器学习/深度学习 数据采集 数据可视化
Python数据分析入门涉及基础如Python语言、数据分析概念及优势。
【7月更文挑战第5天】Python数据分析入门涉及基础如Python语言、数据分析概念及优势。关键工具包括NumPy(数组操作)、Pandas(数据处理)、Matplotlib(绘图)、Seaborn(高级可视化)和Scikit-learn(机器学习)。流程涵盖数据获取、清洗、探索、建模、评估和展示。学习和实践这些将助你有效利用数据。
|
7天前
|
安全 Java 调度
「Python入门」Python多线程
1. **线程与进程区别**:线程共享内存,进程独立;线程启动快,多线程效率高于多进程。 2. **多线程使用**:直接使用Thread类,通过`target`指定函数,`args`传递参数;或继承Thread,重写`run`方法。 3. **守护线程**:设置`setDaemon(True)`,主线程结束时,守护线程一同结束。 4. **join线程同步**:主线程等待子线程完成,如`t.join()`。 5. **线程锁**(Mutex):防止数据竞争,确保同一时间只有一个线程访问共享资源。 6. **RLock(递归锁)**:允许多次锁定,用于需要多次加锁的递归操作。
16 1
「Python入门」Python多线程
|
7天前
|
数据采集 XML JSON
「Python入门」Python代码规范(风格)
**Python编码规范摘要** - 编码:使用UTF-8编码,文件开头可声明`# -- coding: utf-8 --`。 - 分号:避免在行尾使用,不用于分隔命令。 - 行长:不超过80字符,长表达式可使用括号换行。 - 缩进:使用4个空格,禁止混用tab。 - 注释:行注释始于`#`和空格,块注释和文档注释遵循特定格式。 - 空行:函数和类定义间用2空行,方法间1空行,内部适当空行。 - 空格:运算符两侧各空一格,逗号后空格,括号内不空格。 - 命名:模块小写,变量下划线分隔,类驼峰式,布尔变量前缀`is_`。 - 引号:保持一致性,可使用单引号或双引号。
12 1
「Python入门」Python代码规范(风格)
|
12天前
|
测试技术 Python
|
4天前
|
机器学习/深度学习 数据采集 算法
Python实现Prophet时间序列数据建模与异常值检测(Prophet算法)项目实战
Python实现Prophet时间序列数据建模与异常值检测(Prophet算法)项目实战
|
11天前
|
数据采集 编译器 iOS开发
【Python从入门到精通】(一)就简单看看Python吧
【Python从入门到精通】(一)就简单看看Python吧
31 8
|
7天前
|
SQL 关系型数据库 MySQL
「Python入门」python操作MySQL和SqlServer
**摘要:** 了解如何使用Python的pymysql模块与MySQL数据库交互。首先,通过`pip install pymysql`安装模块。pymysql提供与MySQL的连接功能,例如创建数据库连接、执行SQL查询。在设置好MySQL环境后,使用`pymysql.connect()`建立连接,并通过游标执行SQL(如用户登录验证)。注意防止SQL注入,使用参数化查询。增删改操作需调用`conn.commit()`来保存更改。pymssql模块类似,但导入和连接对象创建略有不同。
11 0
「Python入门」python操作MySQL和SqlServer
|
7天前
|
并行计算 Java Python
「Python入门」Python多进程
本文探讨Python中的单进程和多进程。多进程使用`multiprocessing`库,如`Process`类,类似于`threading.Thread`。进程是操作系统分配资源的基本单位,每个程序至少有一个进程。多进程允许多个任务并发执行,提升效率,尤其在多核CPU上优于多线程,因Python的GIL限制了多线程的并行计算。文中通过吃饭睡觉打豆豆的例子,展示了单进程按顺序执行,多进程则可并发执行。还介绍了带参数的多进程、获取进程ID、主进程等待子进程结束及子进程守护等概念。在IO或网络密集型任务中,多线程和多进程各有优势,具体选择应根据任务类型和资源需求。
「Python入门」Python多进程
|
7天前
|
IDE PHP 开发工具
「Python入门」python环境搭建及VScode使用python运行方式
**Python 概述与环境搭建摘要** Python是一种解释型、面向对象、交互式的脚本语言,以其简单易学和丰富库著称。安装Python时,推荐在Windows上选择.exe安装程序,记得勾选“Add Python to PATH”。安装完成后,通过环境变量配置确保Python可被系统识别。验证安装成功,可在CMD中输入`python --version`。Visual Studio Code (VScode)是流行的Python IDE,安装Python插件并选择解释器后,可直接在VScode内编写和运行Python代码。
16 0
「Python入门」python环境搭建及VScode使用python运行方式