目录
一:序列
在python中,序列是最基本的数据结构,它是一块用于存放多个值的连续内存空间。
python中内置了5个常用的序列结构,分别是列表,元组,集合,字典和字符串。
接下来介绍一下序列的公共操作。
1.1 索引
python中每一个元素都有一个编号,也成为索引。这个索引是从0开始递增的。
【注意】:python的索引比较特殊,它的索引可以是负数,负数的索引从右往左计数,
也就是从最后一个元素开始计数,即最后一个元素的索引值是-1.
verse = ["春天","夏天","秋天","冬天"]
print(verse[2]) #秋天
print(verse[-1]) #冬天
1.2 切片
切片是访问序列中元素的另一种方法,它可以访问一定范围内的元素。通过切片操作可以生成一个新的序列。
切片操作的语法:
sname[start : end : step] #用的是冒号,不是逗号 ,区间是左闭右开
verse = ["春天","夏天","秋天","冬天"]
print(verse[1:3:1]) #['夏天', '秋天']
1.3 序列相加
在python中,支持两种类型的序列相加操作,即将两个序列进行连接,不会去除重复的元素,使用(+)运算符实现
verse = ["春天","夏天","秋天","冬天"]
verse2 = ["昨天","今天","明天"]
print(verse+verse2)
#['春天', '夏天', '秋天', '冬天', '昨天', '今天', '明天']
[说明]:进行序列相加时,相同类型的序列指的是相同为列表,元组,集合等,而序列中元素类型可以不同。
1.4 序列乘法
在python中,使用数字n乘以一个序列会生成新的序列。新序列内容为原来序列被重复n次的结果。
phone = ["apple","华为","小米"]
print(phone*3)
#['apple', '华为', '小米', 'apple', '华为', '小米', 'apple', '华为', '小米']
1.5 检查某个元素是否是序列的成员
in关键字检查某个元素是否为序列的成员
not in 关键字实现检查某个元素是否不包含在指定的序列中
1.6 计算序列的长度,最大值,最小值
len()函数:返回序列包含多少个元素
max()函数:返回序列中的最大元素
min()函数:返回序列中的最小元素
num = [12,14,66,9,245,1,90]
print(len(num)) #7
print(max(num)) #245
print(min(num)) #1
1.7 序列的其它内置函数
list() :将序列转换为列表
str(): 将序列转换为字符串
sum():计算元素和
sorted():对元素进行排序
reversed():反转序列中元素
enumerate():将序列组合为一个索引序列,多用在for循环中
二 列表
2.1列表的创建和删除
1)使用赋值运算符直接创建列表
list1 = ["我是最棒的","我是做大事的人","我一定会成功"]
2)创建空列表
emptylist = []
3)创建数值列表
使用list()函数
list2 = list(["hello","world"])
#注意中括号不能省掉
也可以把list()函数直接将range()函数循环出来的结果转换为列表
list(range(10,20,2))
4)删除列表
del listname
2.2 访问列表
list1 = ["我是最棒的","我是做大事的人","我一定会成功"]
print(list1[2]) #我一定会成功
还可以用之前讲的index()
2.3 遍历列表
1)直接用for循环实现
for item in listname:
print(item)
2)使用for循环和enumerate()函数可以实现同时输出索引值和元素内容
list1 = ["我是最棒的","我是做大事的人","我一定会成功"]
for index, item in enumerate(list1):
print(index,item) #我一定会成功
#0 我是最棒的
#1 我是做大事的人
#2 我一定会成功
补充:python中print()函数默认换行输出,为了不换行输出,我们可以在print()里面使用"end = ' ' "
2.4 添加,修改,删除列表元素
1)添加元素
除了使用加号“+”将两个序列连接,我们推荐使用append()方法。
phone = ["oppo","三星","小米","华为"]
phone.append("apple")
print(len(phone))
print(phone)
另外,还可以使用insert()方法用于向列表的指定位置插入元素,但是该方法效率不高。
补充:如果要想将一个列表中的全部元素添加到另一个列表中,可以使用列表对象的extend() 方法实现。
phone1 = ["oppo","三星","小米","华为"]
phone2 = ["诺基亚","魅族"]
phone1.extend(phone2)
print(phone1)
#['oppo', '三星', '小米', '华为', '诺基亚', '魅族']
2)修改元素
修改元素只需要通过索引获取该元素,然后再为其重新赋值即可。
phone1 = ["oppo","三星","小米","华为"]
phone1[2]= "红米"
print(phone1)
# ['oppo', '三星', '红米', '华为']
3)删除元素
- 根据索引删除
del phone[1]
- 根据元素值删除
phone.remove("华为")
2.5对列表进行统计和计算
1)获取指定元素出现次数
phone1 = ["oppo","三星","小米","华为","oppo"]
print(phone1.count("oppo")) #2
2)获取指定元素首次出现的下标
phone1 = ["oppo","三星","小米","华为","oppo"]
print(phone1.index("oppo")) #
3)统计数值列表的元素和
grade = [222,44,66,88,9,2]
print(sum(grade)) #431
2.6对列表进行排序
1)使用sort()方法 : 原列表会发生改变
grade = [222,44,66,88,9,2]
print(grade.sort()) #None
print(grade) #[2, 9, 44, 66, 88, 222]
默认是升序排列,若想降序排列,就需要用到reverse = True
grade = [222,44,66,88,9,2]
grade.sort(reverse=True)
print(grade) #[222, 88, 66, 44, 9, 2]
2)使用内置的sorted()函数实现
注意sorted()方法进行排序后,原来列表的元素顺序不变,因为会建立一个原列表的副本。
grade = [222,44,66,88,9,2]
new_grade= sorted(grade)
print(grade) #[222, 44, 66, 88, 9, 2]
print(new_grade) #[2, 9, 44, 66, 88, 222]
2.7 列表推导式
使用列表推导式可以快速生成一个列表
list = [expression for var in range]
import random
randomnumber = [random.randint(10,100) for i in range(10)]
print(randomnumber)
#[84, 20, 73, 31, 31, 76, 30, 80, 45, 53]
2.8 二维列表
1)直接定义二维列表
list1 = [['a','b','c'],['d','e','f'],['q','w','e'],['a','s','d']]
print(list1)
# [['a', 'b', 'c'], ['d', 'e', 'f'], ['q', 'w', 'e'], ['a', 's', 'd']]
2)使用嵌套的for循环创建
arr = []
for i in range(4):
arr.append([])
for j in range(5):
arr[i].append(j)
print(arr)
# [[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]
3)使用列表推导式创建
arr = [[j for j in range(5)] for i in range(4)]
print(arr)
# [[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]
三 元组
3.1元组的创建和删除
1)使用赋值运算符直接创建元组
num1 = (12,34,67,11,3,99)
print(num1)
print(type(num1))
#(12, 34, 67, 11, 3, 99)
#<class 'tuple'>
2)创建空元组
emptytuple = ()
3)创建数值元素
print(tuple(range(10,20,2)))
#(10, 12, 14, 16, 18)
4)删除元素
del tuplename
3.2 访问元组元素
team = ("火箭","骑士","快船","湖人")
print(team[1])
for index, item in enumerate(team):
print(index,item)
#骑士
#0 火箭
#1 骑士
#2 快船
#3 湖人
3.3 修改元组元素
元组是不可变序列,所以我们不能对它的单个元素值进行修改,
但是元组也不是完全不能修改,我们可以对元组进行重新赋值
coffeename = ("拿铁","卡布奇诺","曼特宁")
coffeename = ("拿铁2","卡布奇诺3")
print(coffeename) #('拿铁2', '卡布奇诺3')
3.4元组推导式
#转换为元组要使用tuple()函数
import random
randomnumber = (random.randint(10,100) for i in range(10))
randomnumber = tuple(randomnumber)
print(randomnumber)
# (69, 30, 31, 50, 22, 86, 50, 32, 29, 85)
四.字典
字典与列表类似,也是可变序列,不过与列表不同,它是无序的可变序列.
保存内容是以键-值对的形式存放的。
键是唯一的,值有多个
不允许同一个键出现两次,如果出现两次,则后一个值会被记住。
4.1字典的创建和删除
1)创建字典是,在键和值之间使用冒号分隔,相邻两个元素使用逗号分隔,所有元素放在一对"{ }"中。
dictionary = {"qq":"282439859","bolg":"yezonghui"}
print(dictionary)
print(type(dictionary))
#{'qq': '282439859', 'bolg': 'yezonghui'}
#<class 'dict'>
2)通过映射函数创建字典
di = dict(zip(list1,list2))
补充: zip()函数:用于将多个列表或者元组对应位置的元素组合为元组,并返回包含这些内容的zip对象
name = ["q","w","e","r"]
sign = ["1","2","3","5"]
dirctionary2 = dict(zip(name,sign))
print(dirctionary2)
# {'q': '1', 'w': '2', 'e': '3', 'r': '5'}
4.2 通过键值对访问字典
使用[] 或者get()方法
d1 = {"春天":"学语文","夏天":"学数学","秋天":"学英语","冬天":"学历史"}
print(d1["夏天"]) #学数学
print(d1.get("秋天")) #学英语
4.3 遍历字典
获取字典视图:
keys() : 获取字典中所有key
values():获取字典中所有value
items():获取字典中所有key,value对
d1 = {"春天":"学语文","夏天":"学数学","秋天":"学英语","冬天":"学历史"}
for item in d1.items():
print(item)
#('春天', '学语文')
#('夏天', '学数学')
#('秋天', '学英语')
#('冬天', '学历史')
d1 = {"春天":"学语文","夏天":"学数学","秋天":"学英语","冬天":"学历史"}
for key,value in d1.items():
print(key,value)
#春天 学语文
#夏天 学数学
#秋天 学英语
#冬天 学历史
4.4 添加,修改和删除字典元素
直接添加
d1 = {"春天":"学语文","夏天":"学数学","秋天":"学英语","冬天":"学历史"}
d1["今天"] = "学习"
print(d1)
#{'春天': '学语文', '夏天': '学数学', '秋天': '学英语', '冬天': '学历史', '今天': '学习
删除
del d1["春天"]
4.5 字典推导式
import random
ranomdict = {i:random.randint(10,100) for i in range(1,5)}
print(ranomdict)
#{1: 77, 2: 77, 3: 100, 4: 79}
五.集合
5.1集合的创建
1)直接使用{}创建
set1 = {1,4,6,7}
2)使用set()函数创建
set1 = set(1,2,3,4,8)
[注意]:创建空字典的时候,只能使用set()实现,因为一对{}表示创建空字典
5.2集合的添加和删除
1)向集合中添加元素使用add()方法实现
2)从集合中删除元素使用remove()
5.3集合的运算
1)两个集合是否相等 ==或者 !=
2)是否是子集 issubset()
3) 是否是超集: issuperset()
4) 交集: & 或者intersection()
5)并集: | 或者union()
6)差集: - 或者difference()
[注]:序列中字符串的学习将在下一个博客进行总结