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!

目录
相关文章
|
3天前
|
存储 程序员 API
Python 入门指南(五)(4)
Python 入门指南(五)
11 1
|
3天前
|
存储 算法 前端开发
Python 入门指南(三)(4)
Python 入门指南(三)
19 5
|
3天前
|
Python 索引 C语言
Python3从零基础到入门(2)—— 运算符-3
Python3从零基础到入门(2)—— 运算符
|
3天前
|
NoSQL 测试技术 API
Python 入门指南(七)(4)
Python 入门指南(七)
9 0
|
3天前
|
测试技术 程序员 数据库
Python 入门指南(七)(3)
Python 入门指南(七)
7 0
|
3天前
|
存储 设计模式 程序员
Python 入门指南(七)(2)
Python 入门指南(七)
9 1
|
3天前
|
XML 算法 uml
Python 入门指南(七)(1)
Python 入门指南(七)
12 0
|
3天前
|
机器学习/深度学习 存储 算法
Python 入门指南(六)(4)
Python 入门指南(六)
8 1
|
3天前
|
设计模式 存储 安全
Python 入门指南(六)(3)
Python 入门指南(六)
10 0
|
3天前
|
存储 缓存 索引
Python 入门指南(六)(2)
Python 入门指南(六)
8 1