6 序列
6.1 序列
6.1.1含义:
一块用于存放抖个值得连续内存空间。
序列结构有:列表、元组、集合、字典、字符串
索引:序列中每一个元素的编号,从0开始
元素1 | 元素2 | 元素3 | …… | 元素n-1 | 元素n |
0 | 1 | 2 | …… | n-2 | n-1 |
索引也可以是负数
元素1 | 元素2 | 元素3 | …… | 元素n-1 | 元素n |
-n | -(n-1) | -(n-2) | …… | -2 | -1 |
负数做索引时是从-1开始的
6.1.2切片
序列名称[start:end:step]
start:切片开始位置,默认为0
end:切片截止位置(不包括),默认为序列长度
step:切片步长,默认为1
复制序列:序列名称[:]
6.1.3 序列相加
序列名称1+序列名称2 #将两个序列合成一个序列
6.1.4 序列相乘
序列名称1*n #新序列的内容为原序列重复n次的结果
特殊功能:初始化指定长度列表
emptylist = [None]*5
print(emptylist)
6.1.5 检查某个元素是否是序列的成员(元素)
成员(元素) in 序列名 #检查成员(元素)在序列中 结果在为True,不在为False
成员(元素) not in 序列名 #检查成员(元素)不在序列中 结果不在为True,在为False
fruit = ['apple','orange','bannan']
print('apple' in fruit)
print('pear' not in fruit)
6.1.6 计算序列的长度、最大值和最小值
len(序列名) #计算序列的长度
max(序列名) #返回序列的最大元素
min(序列名) #返回序列的最小元素
6.1.7 内置函数及作用
函数名称 | 作用 |
list(序列名) | 将序列转换为列表 |
str(序列名) | 将序列转换为字符串 |
sum(序列名) | 计算元素和 |
sorted(序列名) | 对元素排序 |
reversed(序列名) | 反向序列中的元素 |
enumerate(序列名) | 将序列组合为一个索引序列,多用在for循环中 |
例子
fruit = ['apple','orange','bannan']
print('apple' in fruit)
print('pear' not in fruit)
print(len(fruit)) #计算序列的长度
print(max(fruit)) #返回序列的最大元素
print(min(fruit)) #返回序列的最小元素
print(list(fruit))
print("****")
print(str(fruit))
#print(sum(fruit))
print(sorted(fruit))
print("****")
print(reversed(fruit))
print("****")
print(enumerate(fruit))
6.2 列表
一系列特定顺序排列的元素(类型可不同)
6.2.1列表的创建和删除
(1)使用赋值运算符直接创建列表
listname = [element1,element2,......,elementn]
(2)创建空列表
emptylist =[]
(3)创建数值列表
list (data)
data表示可以转换为列表的数据:有range对象、字符串、元组或其他科迭代类型的数据
(4)删除列表
del listname
6.2.2 访问列表元素
print(listname[索引])
6.2.3 遍历列表
(1)直接使用for循环实现
for item in listname:
#输出item
(2)打印元素和索引
for index,item in enumerate(listname):
# 输出index,item
index:用于保存元素的索引
item:用于保存获取元素的值
listname:列表名
6.2.4 添加、修改和删除列表元素
listname.append(obj)
在列表末尾追加元素(也可是列表)
listname.insert(索引,元素或列表) #向列表的指定位置插入元素
listname.extend(要添加的列表名) #将一个列表中的全部元素添加到另一个列表中
用+连接列表
l1 = ['香蕉','菠萝','栗子']
l2 = ['白菜','茄子','辣椒']
print(l1+l2)
l1.append('桃子')
print(l1)
['香蕉', '菠萝', '栗子', '白菜', '茄子', '辣椒']
['香蕉', '菠萝', '栗子', '桃子']
l1 = ['香蕉','菠萝','栗子']
l2 = ['白菜','茄子','辣椒']
l2.insert(0,'土豆')#也可加入列表,作为元素
print(l2)
l1.extend(l2)
print(l1)
['土豆', '白菜', '茄子', '辣椒']
['香蕉', '菠萝', '栗子', '土豆', '白菜', '茄子', '辣椒']
6.2.5 对列表进行统计排序操作
功能 | 方法或函数 | 介绍 | 返回值 |
获取制定元素出现的次数 | 列表名.count(对象 #方法 | 精确匹配 | 元素在列表中出现的次数 |
获取指定元素首次出现的下标 | 列表名.index(对象) #方法 | 精确匹配 | 元素在列表中首次出现的位置(索引) |
统计数值列表的元素和 | sum(列表名[,start]) #函数 | start表示统计结果加上start,是可选参数,默认为0 | 返回求和结果 |
使用列表对象sort()方法实现排序 | 列表名.sort(key = None , reverse = False) | key:表示用于比较的键,默认状态为:先对大写字母排序,再对小写字母排序。如k=str.lower表示排序时不区分大小写; reverse:为True时降序排列 为False时为升序排列,默认为升序 | 排序后的列表注意:对中文排序不友好,排序后原列表元素位置会发生变化 |
使用内置sorted()函数实现排序 | sorted(列表名, key = None , reverse = False) | 排序后的列表注意:对中文排序不友好,排序后原列表元素位置不发生变化 |
l1=[1,2,3,3,2,1]
print(l1.count(3))
print(l1.index(2))#未出现会报错
print(sum(l1,3))
l1.sort()
print(l1)
print(sorted(l1,reverse=True))
6.2.6 列表推导式
(1)生成制定范围的数值列表
列表名 = [表达式 for var in range]
import random
rd = [random.randint(0,100) for i in range(10)]
print(rd)
[42, 5, 5, 83, 31, 96, 43, 60, 77, 61]
(2)根据列表生成制定需求的列表
Newlist = [expression for var in list]
shouliang = [100,200,400,300]
total = [x*0.5 for x in shouliang]
print(total)
[50.0, 100.0, 200.0, 150.0]
(3)从列表中选择符合条件的元素组成新的列表
Newlist = [expression for var in list if condition]
shouliang = [100,200,400,300]
total = [x*0.5 for x in shouliang if x>200]
print(total)
[200.0, 150.0]
6.3 元组
由一系列按特定顺序排列的元素组成的不可变序列。
6.3.1 元组的创建和删除
(1)使用赋值号创建元组
元组名 = (元素1,元素2,…….元素n)
注意:
- 小括号也可以省略
- 创建值包含一个元素的元组,元素后要加逗号。未加逗号则是字符串
(2)创建空元组
元组名 = ()
(3) 创建数值元组
tuple(data)
data:可以使range对象、字符串、元组或者其他科迭代类型的数据
(4)删除元组
del 元组名
6.3.2 访问元组元素·
(1)使用索引访问元组元素
T = ('python',28,('人生苦短','我用python'),['爬虫','自动化运维','云计算','web开发'])
print(T)
print(T[0])
('python', 28, ('人生苦短', '我用python'), ['爬虫', '自动化运维', '云计算', 'web开发'])
Python
注意:
输出元组时,包括左右两侧的小括号
输出单个元组元素时,不包括小括号,字符串不带引号,不包括小括号
(2)使用切片获取指定的元素
print(T[:3])
('python', 28, ('人生苦短', '我用python'))
(3)修改元组元素
注意:不能对元组的单个元素进行修改
可以对整个元组进行重新赋值,也可以对元组进行连接组合(连接的内容必须是元组)
(4)元组推导式(类似类表推导式)
不同元组需要使用tulpe函数,将生成器对象转换为元组
元组名 = tuple(表达式 for var in range)
import random
rd = [random.randint(0,100) for i in range(10)]
print(rd)
[42, 5, 5, 83, 31, 96, 43, 60, 77, 61]
元组推导式生成器进行遍历后,即不存在了
nb = (i for i in range(3))
for i in nb:
print(i,end=" ")
print(tuple(nb))
0 1 2 ()
元组和列表的区别
类型 | 定义 | 比喻 | 元素修改 | 方法函数 | 切片 | 速度 | 字典的键 |
列表 | [] | 铅笔在白纸上写的歌词 | 随意 | append();extend(); insert();pop();remove() | 可切片访问,修改元素 | 慢 | 不可以 |
元组 | () | 钢笔写下的歌词,只能换纸重写或续纸 | 不可以 | 无上述方法 | 只可以切片访问元素 | 快 | 可以 |