1.5.1序列
序列是什么?序列在程序中是一种常用的数据存储方式,几乎每一种程序设计语言都提供了类似的数据结构,JAVA和C中的数组;在python中内置了5个常用的序列结构,分别是列表、元组、集合、字典和字符串。
序列就是一款用于存放多个值得连续内存空间,并且按照一定顺序排列,每一个值(称为元素)都分配了一个数字,称为索引或者位置。通过该索引可以取出相应的值。
在Python中,序列的主要结构有列表、元组、集合、字典和字符串。对于这些序列结构有一下几个同通用的操作,其中,集合和字典不支持索引、切片、相加和相乘操作
1.5.1.1索引
序列中每一个元素都有一个编号,这个编号就是索引,索引是从0开始递增的,即下标为0的元素是第一个元素,下标为1的是第二个元素一次类推:
示例代码:
运行结果:
在Python中索引可以是负数,-1表示最后一个元素,-2表示倒数第二个元素依次类推。
示例代码:
结果:
1.5.1.2切片
切片操作是访问序列中元素的另外一种方法,他可以访问一定范围内的元素。通过切片操作可以生成一个新的序列。语法
Sname[start🔚step]
说明
Sname 序列名称
start:表示切片的起始位置(包括该位置),如果不指定,则默认为0
end: 表示切片的结束位置(不包括该位置),如果不指定,则默认为序列的长度
step: 表示切片的步长,如果省略,则默认为1,当省略该步长时,最后一个冒号也可以省略。
如果想要复制整个序列,可以将start和end省略,但中间的冒号要保留 sname[:]
示例代码:
结果:
1.5.1.3序列相加
在Python中,支持两种相同的类型的序列相加操作,即将两个序列进行连接,不会去除重复的元素,使用+号实现
示例代码:
a=["1","2","3"]
b=["2","5","6"]
print(a+b)
运行结果:
['1', '2', '3', '2', '5', '6']
1.5.1.4序列相乘
在Python中,使用数字n乘以一个序列会生成新的序列。新序列的内容为原来序列被重复n次的结果。
示例代码:
jieqi=["谷雨飞鱼 ","端午龙舟"]
print(jieqi*3)
运行结果:
['谷雨飞鱼 ', '端午龙舟', '谷雨飞鱼 ', '端午龙舟', '谷雨飞鱼 ', '端午龙舟']
1.5.1.5检查某个元素是否是序列的成员
在Python中,可以使用in关键字检查某个元素是否为列的成员
语法:
Value in sequence
示例代码:
c=["4","5","6"]
print("4" in c)
print("1" in c)
运行结果:
True
False
1.5.1.6计算序列的长度、最大值和最小值
在Python中,提供了内置函数计算序列的长度、最大值、最小值。
len():计算序列长度
max():获取函数返回序列中的最大元素
min():函数返回序列中的最小元素
示例代码:
num=[7,14,21,28,35,42,49,56,63]
print(len(num)) #计算num的长度
print(max(num)) #计算最大值
print(min(num)) #计算最小值
运行结果:
9
63
7
1.5.2列表
Python中的列表也是由一系列按照特定顺序排列的元素组成的。它是python中内置的可变序列。在形式上,列表所有元素都放在一对中括号“[]”中,两个相邻元素间使用逗号“,”分隔。在内容上可以是任何类型的数据,并且统一列表,元素类型是可以不同。
1.5.2.1 列表基本操作
1.使用赋值运算符直接创建列表
语法格式:
listname=[element1,element2,element3,…,elementn]
示例:
number=[1,3,5,7,9,11,13,15,17,19]
2.创建空列表
示例:
emptylist=[]
3.创建数值列表
在Python中可以使用list()+range函数循环出来的结果转化为列表
list函数基本语法如下:
list(data)
示例代码
print(list(range(0,10,2))
运行结果
[0,2,4,6,8]
4.删除列表
对于已经创建的列表可以使用del进行删除。
del基本语法:
del listname
示例代码:
tea=[“红茶”,”绿茶”,”茉莉花茶”]
del tea
5.访问列表元素
这里用到的就是上一章节说到的索引
使用listname[index]访问列表元素
示例代码:
tea=['红茶','绿茶','茉莉花茶']
print(tea[0])
运行结果:
红茶
扩展:列表翻转
我们可以使用listname[::-1]将列表元素进行翻转(可以应用在字符串中,等到字符串时在说)
示例代码
tea=['红茶','绿茶','茉莉花茶']
print(tea[::-1])
运行结果:
['茉莉花茶', '绿茶', '红茶']
6.添加列表元素
我们可以使用append或者insert ,使用extend可以将一个列表的元素 全部追加到另外一个列表中。
append在列表末尾插入数据
语法: listname.append(obj)
示例代码:
tea=['红茶','绿茶','茉莉花茶']
tea.append("茶艺大赏")
print(tea)
结果:
['红茶', '绿茶', '茉莉花茶', '茶艺大赏']
Insert 向列表指定位置插入数据,但此方法执行效率不如append
语法:listname.insert(index,obj) 说明:将obj放到index的位置,原index数据后移
tea=['红茶','绿茶','茉莉花茶']
tea.insert(1,'花茶')
print(tea)
结果:
['红茶', '花茶', '绿茶', '茉莉花茶']
extend语法
listname.extend(seq) 向原listname中追加seq列表中的所有元素
示例代码:
tea=['红茶','绿茶','茉莉花茶']
price=['3元','3元','3元']
tea.extend(price)
print(tea)
运行结果:
['红茶', '绿茶', '茉莉花茶', '3元', '3元', '3元']
7.修改列表元素
修改列表中的元素,只需要通过索引获取该元素,然后再为其重新赋值即可.
示例代码:
tea=['红茶','绿茶','茉莉花茶']
tea[1]="大红袍"
print(tea)
结果:
['红茶', '大红袍', '茉莉花茶']
8.删除列表元素
在Python中删除列表元素有两种方法,一种是根据下标删除,一种是根据值删除
根据索引删除:
使用del listname[index]格式,说明删除listname中下标为index的元素
示例代码:
tea=['红茶','绿茶','茉莉花茶']
del tea[-1]
print(tea)
结果:
['红茶', '绿茶']
根据值删除:
使用remove,listname.remove(“元素内容”),说明移除listname中元素为”元素内容”的元素
示例代码:
tea=['红茶','绿茶','茉莉花茶']
tea.remove("绿茶")
print(tea)
结果:
['红茶', '茉莉花茶']
1.5.2.2遍历
遍历是指沿着某条搜索路线,依次对列表中每个结点均做一次且仅做一次访问。对于列表有两种方式进行遍历:
第一种使用in 遍历:
for item in listname:
#输出item
示例代码:
tea=['红茶','绿茶','茉莉花茶']
for item in tea:
print(item)
运行结果:
红茶
绿茶
茉莉花茶
第二种方式 下标遍历
for index in range(len(listname)):
#输出linstname[index]
示例代码:
tea=['红茶','绿茶','茉莉花茶']
for index in range(len(tea)):
print(tea[index])
运行结果:
红茶
绿茶
茉莉花茶
1.5.3元组
1.5.3.1 元组基本操作
1.元组的创建
元组的创建和列表一样就是列表的[]括号变成了()
tuplename =(element1,element2,…elementn)
示例代码:
num =(7,14,21,28,35,42,49)
在Python中,元组使用一对小括号将所有的元素括起来,但是小括号不是必须的
示例代码:
nba="科比","乔丹","詹姆斯","威斯布鲁克"
print(type(nba))
输出
<class 'tuple'>
若元组只有一个元素,需要在定义的时候加个“,”,否则会被定义成字符串
示例代码:
gushi1=("劝君更尽一杯酒",)
gushi2=("劝君更尽一杯酒")
运行结果:
<class 'tuple'>
<class 'str'>
同样的元组也可以创建空元组,和数值元组方法和列表一样,这里不再举例
2.删除元组
del tuplename
3.访问元组元素
元组的元素访问也是使用下标进行访问,可参考序列的索引
语法:
Tuplename[index]
4.修改元组元素
元组是不可变序列,所以我们不能对他的单个元素值进行修改。但是元素不是完全不能修改。我们可以对元组进行重新赋值
示例代码:
nba="科比","乔丹","詹姆斯","威斯布鲁克"
nba="威斯布鲁克","科比","邓肯","詹姆斯"
print(nba)
结果:
('威斯布鲁克', '科比', '邓肯', '詹姆斯')
另外也可以对元组进行连接组合,但是连接的一定是元组不是其他的数据类型
示例代码:
nba1=("威斯布鲁克","科比","邓肯","詹姆斯")
nba1=nba1+("张伯伦","艾佛森")
print(nba1)
运行结果:
('威斯布鲁克', '科比', '邓肯', '詹姆斯', '张伯伦', '艾佛森')
1.5.3.2遍历元组
方法和列表遍历一样,一个是in遍历,一个是下标遍历,操作请参考列表的遍历
1.5.3.3元组和列表的区别
相同点:元组和列表都属于序列,而且他们又可以按照特定的顺序存放一组元素,类型又不受限制,只要是Python支持的类型都可以。
区别:
1.列表数据可变序列,他的元素可以随时修改或者删除;元组属于不可变序列,其中的元素不可以修改,除非整体替换
2.列表可以使用 append()、extend()、insert()、remove()、pop()等方法实现添加和修改列表元素,而元组没有这几个方法,所以不能向元组中添加和修改元素。同样,元组不能删除元素。
3.列表可以使用切片访问和修改列表中的元素。元组也支持切片,但是他只支持通过切片访问元组中的元素,不支持修改
4.元组比列表的访问和处理速度快,所以当只是需要对其中的元素进行访问,而不进行任何修改时,建议使用元组
5.列表不能作为字典的键,而元组可以
1.5.4字典
在Python中,字典与列表类似,也是可变序列,不过与列表不同的是,他是无序可变序列,保存的形式是以 键-值对 形式存放的。
字典的主要特征如下:
1.通过键而不是通过索引来读取的
2.字典是任意无序对象的无序集合
3.字典是可变的,并且可以任意嵌套
4.字典中的键必须唯一
5.字典中的键必须不可变(所以列表不能作为字典中的键)
1.5.4.1 字典的创建和删除
在定义字典的时候,每个元素都包含了两个部分”键”+”值”,在创建字典时,键和值之间用冒号分隔,元素和元素之间使用逗号分隔
示例代码
name={"黎明":"90","刘德华":"90","郭敬明":"80"}
字典还可以通过映射来创建,语法格式
dictionary=dict(zip(list1,list2))
说明:
dictionary : 表示字典的名称
zip()函数:用于将多个列表或者元组对应位置的组合为元组,并返回包含这些内容的zip对象。
list1:一个列表,用于指定要生成的字典的键
list2:一个列表,用于指定要生成字典的值
示例:
fruit=["橘子","香蕉","苹果","西瓜"]
price=["3","5","7","9"]
print(dict(zip(fruit,price)))
运行结果:
{'橘子': '3', '香蕉': '5', '苹果': '7', '西瓜': '9'}
字典还可以通过关键字参数来进行创建,格式
dictionary=dict(key1=value1,key2=value2,…,keyn=valuen)
示例:
fruitprice=dict(橘子=3,香蕉=5,苹果=7,西瓜=9)
print(fruitprice)
运行结果:
{'橘子': '3', '香蕉': '5', '苹果': '7', '西瓜': '9'}
在Python中还可以使用dict对象的fromkeys()创建值为空的字典,格式
dictionary=dict.fromkeys(list1)
list1:键的列表
示例:
fruit=["橘子","香蕉","苹果","西瓜"]
fruitprice=dict.fromkeys(fruit)
print(fruitprice)
结果:
{'橘子': None, '香蕉': None, '苹果': None, '西瓜': None}
字典的删除:
del dictionary
1.5.4.2通过键值访问字典
在Python中,主要是通过键去访问字典中的值,dictionary[“键”]
示例:
fruit=["橘子","香蕉","苹果","西瓜"]
price=["3","5","7","9"]
fruitprice=dict(zip(fruit,price))
print(fruitprice["香蕉"])
结果:
5
不过Python中比较推荐的方法是使用字典对象的get()方法获取指定键的值
格式: dictionary.get(key[,default])
key:字典的键
default:为可选项,用于指定当指定的键不存在的时候,返回一个默认值,如果省略,则返回None
示例代码1:
fruit=["橘子","香蕉","苹果","西瓜"]
price=["3","5","7","9"]
fruitprice=dict(zip(fruit,price))
print(fruitprice.get("苹果"))
print(fruitprice.get("猕猴桃"))
运行结果1:
7
None
示例代码2:
fruit=["橘子","香蕉","苹果","西瓜"]
price=["3","5","7","9"]
fruitprice=dict(zip(fruit,price))
print(fruitprice.get("苹果"))
print(fruitprice.get("猕猴桃","你要的水果没有了!!!"))
运行结果2:
7
你要的水果没有了!!!
1.5.4.3 添加、修改和删除字典元素
由于字典是可变数列,所以可以随时在字典中添加”键-值”,向字典中添加元素的语法格式如下:
dictionary[key]=value
示例代码:
fruit=["橘子","香蕉","苹果","西瓜"]
price=["3","5","7","9"]
fruitprice=dict(zip(fruit,price))
fruitprice["猕猴桃"]=11
print(fruitprice)
运行结果
{'橘子': '3', '香蕉': '5', '苹果': '7', '西瓜': '9', '猕猴桃': 11}
如果dictionary[key]=value 中的key是存在的就是更新键所对应的值,也就是修改
示例代码:
fruit=["橘子","香蕉","苹果","西瓜"]
price=["3","5","7","9"]
fruitprice=dict(zip(fruit,price))
fruitprice["猕猴桃"]=11
fruitprice["香蕉"]=11
print(fruitprice)
运行结果:
{'橘子': '3', '香蕉': 11, '苹果': '7', '西瓜': '9', '猕猴桃': 11}
删除元素:
del dictionary[key]
示例:
fruit=["橘子","香蕉","苹果","西瓜"]
price=["3","5","7","9"]
fruitprice=dict(zip(fruit,price))
print(fruitprice)
del fruitprice["西瓜"]
print(fruitprice)
结果:
{'橘子': '3', '香蕉': '5', '苹果': '7', '西瓜': '9'}
{'橘子': '3', '香蕉': '5', '苹果': '7'}
1.5.4.4遍历字典
遍历字典,其实就是遍历key,Python中提供了item()方法可以获取字典的”键-值”,除此之外字典对象还提供了keys()和values()方法,用于返回字典的键和值。
遍历方法有以下几种(结果不给出了):
方法1:
for item in fruitprice.items():
print(item)
方法2:
for key,value in fruitprice.items():
print("字典的键是:"+key+" 字典的值是:"+value)
方法3:
for key in fruitprice.keys():
print("字典的键是:" + key + " 字典的值是:" + fruitprice[key])
方法4:
for value in fruitprice.values():
print( "字典的值是:" + value)
1.5.5列表元组字典的区别
数据结构 | 是否可变 | 是否重复 | 是否有序 | 定义符号 |
---|---|---|---|---|
列表(list) | 可变 | 可重复 | 有序 | [] |
元组(tuple) | 不可变 | 可重复 | 有序 | () |
字典(dict) | 可变 | 可重复 | 无序 | {key:value} |