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!

目录
相关文章
|
7天前
|
Python
数据分享|PYTHON用ARIMA ,ARIMAX预测商店商品销售需求时间序列数据
数据分享|PYTHON用ARIMA ,ARIMAX预测商店商品销售需求时间序列数据
28 6
|
5天前
|
机器学习/深度学习 运维 Python
python深度学习实现自编码器Autoencoder神经网络异常检测心电图ECG时间序列
python深度学习实现自编码器Autoencoder神经网络异常检测心电图ECG时间序列
14 0
|
1天前
|
机器学习/深度学习 自然语言处理 语音技术
【Python 机器学习专栏】Python 深度学习入门:神经网络基础
【4月更文挑战第30天】本文介绍了Python在深度学习中应用于神经网络的基础知识,包括神经网络概念、基本结构、训练过程,以及Python中的深度学习库TensorFlow和PyTorch。通过示例展示了如何使用Python实现神经网络,并提及优化技巧如正则化和Dropout。最后,概述了神经网络在图像识别、语音识别和自然语言处理等领域的应用,并强调掌握这些知识对深度学习的重要性。随着技术进步,神经网络的应用将持续扩展,期待更多创新。
|
1天前
|
数据采集 数据挖掘 测试技术
python、R语言ARIMA-GARCH分析南方恒生中国企业ETF基金净值时间序列分析
python、R语言ARIMA-GARCH分析南方恒生中国企业ETF基金净值时间序列分析
11 1
|
1天前
|
vr&ar Python
Python自激励阈值自回归(SETAR)、ARMA、BDS检验、预测分析太阳黑子时间序列数据
Python自激励阈值自回归(SETAR)、ARMA、BDS检验、预测分析太阳黑子时间序列数据
|
1天前
|
Python
Python随机波动性SV模型:贝叶斯推断马尔可夫链蒙特卡洛MCMC分析英镑/美元汇率时间序列数据|数据分享
Python随机波动性SV模型:贝叶斯推断马尔可夫链蒙特卡洛MCMC分析英镑/美元汇率时间序列数据|数据分享
|
1天前
|
机器学习/深度学习 Python
【Python机器学习专栏】时间序列数据的特征工程
【4月更文挑战第30天】本文探讨了时间序列数据的特征工程,强调其在捕捉季节性、揭示趋势、处理异常值和提升模型性能中的重要性。介绍了滞后特征、移动窗口统计特征、时间戳特征、频域特征和波动率特征等方法,并提供了Python实现示例。通过有效特征工程,可提高时间序列分析的准确性和预测可靠性。
|
1天前
|
机器学习/深度学习 算法 数据挖掘
【Python 机器学习专栏】Python 机器学习入门:基础概念与流程
【4月更文挑战第30天】本文介绍了Python在机器学习中的重要性,机器学习的基础概念和分类,包括监督学习、非监督学习和强化学习。Python因其丰富的库(如Scikit-learn、TensorFlow、PyTorch)、简单易学的语法和跨平台性在机器学习领域广泛应用。文章还概述了机器学习的基本流程,包括数据收集、预处理、特征工程、模型训练与评估等,并列举了常用的Python机器学习算法,如线性回归、逻辑回归、决策树和支持向量机。最后,讨论了Python机器学习在金融、医疗、工业和商业等领域的应用,鼓励读者深入学习并实践这一技术。
|
1天前
|
数据可视化 数据挖掘 Python
Python时间序列分析苹果股票数据:分解、平稳性检验、滤波器、滑动窗口平滑、移动平均、可视化(下)
Python时间序列分析苹果股票数据:分解、平稳性检验、滤波器、滑动窗口平滑、移动平均、可视化
|
1天前
|
数据可视化 API 开发者
Python时间序列分析苹果股票数据:分解、平稳性检验、滤波器、滑动窗口平滑、移动平均、可视化(上)
Python时间序列分析苹果股票数据:分解、平稳性检验、滤波器、滑动窗口平滑、移动平均、可视化
11 0