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!

目录
相关文章
|
2月前
|
SQL 关系型数据库 数据库
Python SQLAlchemy模块:从入门到实战的数据库操作指南
免费提供Python+PyCharm编程环境,结合SQLAlchemy ORM框架详解数据库开发。涵盖连接配置、模型定义、CRUD操作、事务控制及Alembic迁移工具,以电商订单系统为例,深入讲解高并发场景下的性能优化与最佳实践,助你高效构建数据驱动应用。
408 7
|
3月前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
386 1
|
4月前
|
API 数据安全/隐私保护 开发者
Python自定义异常:从入门到实践的轻松指南
在Python开发中,自定义异常能提升错误处理的精准度与代码可维护性。本文通过银行系统、电商库存等实例,详解如何创建和使用自定义异常,涵盖异常基础、进阶技巧、最佳实践与真实场景应用,助你写出更专业、易调试的代码。
195 0
|
4月前
|
IDE 开发工具 数据安全/隐私保护
Python循环嵌套:从入门到实战的完整指南
循环嵌套是Python中处理多维数据和复杂逻辑的重要工具。本文通过实例讲解嵌套循环的基本用法、常见组合、性能优化技巧及实战应用,帮助开发者掌握其核心思想,避免常见错误,并探索替代方案与进阶方向。
444 0
|
2月前
|
Cloud Native 算法 API
Python API接口实战指南:从入门到精通
🌟蒋星熠Jaxonic,技术宇宙的星际旅人。深耕API开发,以Python为舟,探索RESTful、GraphQL等接口奥秘。擅长requests、aiohttp实战,专注性能优化与架构设计,用代码连接万物,谱写极客诗篇。
Python API接口实战指南:从入门到精通
|
2月前
|
存储 Java 调度
Python定时任务实战:APScheduler从入门到精通
APScheduler是Python强大的定时任务框架,通过触发器、执行器、任务存储和调度器四大组件,灵活实现各类周期性任务。支持内存、数据库、Redis等持久化存储,适用于Web集成、数据抓取、邮件发送等场景,解决传统sleep循环的诸多缺陷,助力构建稳定可靠的自动化系统。(238字)
613 1
|
3月前
|
调度 数据库 Python
Python异步编程入门:asyncio让并发变得更简单
Python异步编程入门:asyncio让并发变得更简单
237 5
|
6月前
|
Python
Python字符串格式化利器:f-strings入门指南
Python字符串格式化利器:f-strings入门指南
402 80
|
3月前
|
数据采集 存储 XML
Python爬虫入门(1)
在互联网时代,数据成为宝贵资源,Python凭借简洁语法和丰富库支持,成为编写网络爬虫的首选。本文介绍Python爬虫基础,涵盖请求发送、内容解析、数据存储等核心环节,并提供环境配置及实战示例,助你快速入门并掌握数据抓取技巧。

推荐镜像

更多