6、insert(参数一,参数二):在索引号为参数一的位置插入元素参数二。
8、remove(参数):删除列表中第一次出现的参数元素(无返回值)。
10、sort(参数):排序(不填入参数默认升序,reverse=True 降序)。
4、values():获取字典中的所有值,与keys()类似
6、pop(参数):(注意:返回被删除的值,不是被删除的键值对)
组合数据类型
组合数据类型定义:将多种数据组合在一起,底层本质为数值和字符串两类
常见组合类型:
列表(中括号 [] 括起,元素间用逗号分隔)
元组(括号 () 括起)
字典(后续学习)
其他高级类型(如 numpy array、pandas 表格、pytorch 张量等)
一、列表类型
1、列表类型介绍
① 可包含任意数据类型(数字、字符串、子列表、元组、字典等)。
②有序且可迭代(支持循环)
ls = [1,2,"Python"]
print(ls,type(ls))
#输出
#[1, 2, 'Python'] <class 'list'>
2、列表元素获取
①通过索引:通过下标获取元素(正数从左到右,负数从右l到左)。
②通过切片:L[start:end] 获取子列表(不包含 end)。
③嵌套索引:逐层解析(如 L[1][2] 先取第1个元素,再取其第2个子元素)。
a='学习'
ls=[12,'11',['p','t'],a]
print(ls[0],ls[2],ls[-3])
#输出
#12 ['p', 't'] ['p', 't']
a='学习'
ls=[12,'12',['p','t'],a]
print(ls[0:2],ls[-3:-1])
#输出
#[12, '12'] ['12', ['p', 't']]
3、嵌套列表索引方法
当列表1s中包含子列表,且子列表中又包含子列表时,获取子列表中的子列表的元素的方法为ls[索引号][索引号][索引号]。因此当列表中包含多层子列表时,获取最内层子列表中的元素的方法为ls[索引号][索引号][索引号]...
ls = [12,['le',[3,4,'hello'],19],'py']
print(ls[1][1][2][2])
#输出
#l
4、循环访问列表元素
ls = [['t','f'],[12,34,7],'Python']
for i in ls:
print(i)
#输出
#['t', 'f']
#[12, 34, 7]
#Python
5、列表类型的函数
列表数据类型用list表示,可以通过type()函数查询到对应列表的数据类型,而其他数据类型可以通过list()函数强制转换为列表类型。
list(a)
将字符串转换为字符列表,而整数 b
不可迭代,引发错误。
a = "你好,办公自动化"
b = 12
print(list(a))
print(list(b))
#输出
#['你', '好', ',', '办', '公', '自', '动', '化']
#TypeError: 'int' object is not iterable
6、列表类型的方法
dir(list)
返回列表类的所有属性和方法。
print(dir(list))
#输出
#['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
1、append()
方法在列表末尾添加元素。
ls = ['奶茶','大盘鸡']
ls.append('冰淇淋')
print(ls)
#输出
#['奶茶', '大盘鸡', '冰淇淋']
2、clear()
方法清空列表所有元素。
ls = ['奶茶','大盘鸡']
ls.clear()
print(ls)
#输出
#[]
3、copy()方法复制一个新列表
ls = ['奶茶','大盘鸡']
ls_new1 = ls.copy()
ls_new2 = ls
ls.clear()
print(ls,ls_new1,ls_new2)
ls_new2.append('冰淇淋')
print(ls,ls_new1,ls_new2)
#输出
#[] ['奶茶', '大盘鸡'] []
#['冰淇淋'] ['奶茶', '大盘鸡'] ['冰淇淋']
4、count(参数):统计参数出现次数。
ls = ['奶茶','大盘鸡','大盘鸡','奶茶','奶茶']
ls_count = ls.count('奶茶')
print(ls_count)
#输出
#3
5、index(参数):返回参数首次出现的下标。
ls = ['奶茶','大盘鸡','冰淇淋','榴莲']
ls_index = ls.index('冰淇淋')
print(ls_index)
#输出
#2
6、insert(参数一,参数二):在索引号为参数一的位置插入元素参数二。
ls = ['奶茶','大盘鸡','冰淇淋','榴莲']
ls.insert(2,'蛋糕')
print(ls)
#输出
#['奶茶', '大盘鸡', '蛋糕', '冰淇淋', '榴莲']
7、pop(参数):删除并返回指定下标元素。
ls = ['奶茶','大盘鸡','冰淇淋','榴莲']
ls_pop = ls.pop(2)
print(ls_pop,ls)
#输出
#冰淇淋 ['奶茶', '大盘鸡', '榴莲']
8、remove(参数):删除列表中第一次出现的参数元素(无返回值)。
ls = ['奶茶','大盘鸡','冰淇淋','榴莲','大盘鸡']
ls_remove = ls.remove('大盘鸡')
print(ls_remove,ls)
#输出
#None ['奶茶', '冰淇淋', '榴莲', '大盘鸡']
9、reverse():原地翻转列表。
ls = ['奶茶','大盘鸡','冰淇淋','榴莲']
ls_reverse = ls.reverse()
print(ls_reverse,ls)
#输出
#None ['榴莲', '冰淇淋', '大盘鸡', '奶茶']
10、sort(参数):排序(不填入参数默认升序,reverse=True 降序)。
ls_1 = ['奶茶','大盘鸡','冰淇淋','榴莲']
ls_2 = [3,2,6,7,3,1]
ls_sort_1 = ls_1.sort()
ls_2.sort()
print(ls_sort_1,ls_1,ls_2)
#输出
#None ['冰淇淋', '大盘鸡', '奶茶', '榴莲'] [1, 2, 3, 3, 6, 7]
11、注意
sort()、reverse() 直接修改原列表,无返回值。
二、元组类型
元组特性:
用括号 () 括起,元素可为任意类型。
不可变性:创建后无法修改(增删改均不允许)。
应用场景:高安全性需求(如用户唯一标识、数据库关键字段),元组因不可变性,适合存储需保护的数据
操作:
仅支持创建和删除(del 关键字销毁元组)。
tuple():构建空元组或将可迭代对象转为元组。
tp = ('冰淇淋', '大盘鸡', '奶茶', '榴莲')
del tp
print(tp,type(tp))
#输出
#print(tp,type(tp))
#NameError: name 'tp' is not defined
del tp
删除变量 tp
,后续访问时变量不存在,引发错误。
a = tuple()
b = tuple('Python')
print(a,b,len(b))
#输出
#() ('P', 'y', 't', 'h', 'o', 'n') 6
三、字典类型
1字典介绍
①形式:{键1:值1,键2:值2,键3:值3...}
②每个元素都包含一个键和一个值,键是值的唯一标识
③键必须是独一无二的,值可以相同
④键可以是数值,字符串,元组类型的数据,但不能是列表或字典类型的数据(动态数据),应为键必须保证独一无二且不能随意修改
补充:
dict()函数可以创建一个空字典数据
可以通过赋值语句添加键值对
d = {202101:'张三',202102:'李四',202103:'王五'}
print(d,len(d),type(d))
#输出
#{202101: '张三', 202102: '李四', 202103: '王五'} 3 <class 'dict'>
a=dict()
a[202104]="赵六"
a[202105]="李四"
print(a)
#输出
#{202104: '赵六', 202105: '李四'}
2、获取字典元素
注意:不能使用索引或切片的方法来获取字典元素,而需要使用键来获取
d = {202101:'张三',202102:'李四',202103:'王五'}
print(d[202102])
#输出
#李四
3、字典类型的方法
输出python中所有字典类型的方法
print(dir(dict))
#输出
#['__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__ior__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__or__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__ror__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
1、clear():
清楚字典中的数据元素,如果需要删除整个字典,可以使用保留字del
2、get(参数一,参数二) ps:非常重要
查找参数一是否为字典中的键,如果是则返回对应的值,不是则返回参数二
d = {202101:'张三',202102:'李四',202103:'王五'}
print(d.get(202102))
print(d.get(202104))
print(d.get(202104,'查询不到'))
#输出
#李四
#None
#查询不到
3、keys():获取字典中的全部键信息
返回的结果不是列表但可迭代,可以使用list()将信息转化为列表类型
d = {202101:'张三' ,202102:'李四' ,202103:'王五' }
print(d.keys())
#输出
#dict_keys([202101, 202102, 202103])
d = {202101:'张三' ,202102:'李四' ,202103:'王五' }
print(list(d.keys()))
#输出
#[202101, 202102, 202103]
4、values():获取字典中的所有值,与keys()类似
d = {202101:'张三',202102:'李四',202103:'王五'}
print(list(d.values()))
#输出
#['张三', '李四', '王五']
5、items(): 也是非常重要
获取字典中的所有键值对信息,返回结果也可以用list()强转
d = {202101:'张三',202102:'李四',202103:'王五'}
print(d.items())
#输出
#dict_items([(202101, '张三'), (202102, '李四'), (202103, '王五')])
6、pop(参数):(注意:返回被删除的值,不是被删除的键值对)
删除字典中的数据,当参数是字典中的键时将删除对应的键值对
d = {202101:'张三',202102:'李四',202103:'王五'}
a = d.pop(202102)
print(d,a)
#输出
#{202101: '张三', 202103: '王五'} 李四
4、字典的遍历
for:访问所有内容(注意: for循环只能遍历到对应的键)
d = {202101:'张三',202102:'李四',202103:'王五'}
for a in d:
print(a)
#输出
#202101
#202102
#202103
通过键访问值,遍历打印所有键值对。
d = {202101:'张三',202102:'李四',202103:'王五'}
for a in d:
print(a,d[a])
#输出
#202101 张三
#202102 李四
#202103 王五
5、数据的维度
列表和字典可以表示不同维度的数据,列表可以用于一维或二维数据,字典可表示高维数据
ls= [['日期','芯片','手机','智能设备'],\
['1日',4556.448898,1412.691145,1070.940706],\
['2日',5857.880571,1103.11709,742.1934921],\
['3日',1435.169954,672.2047677,74.65002242],\
['4日',1448.831392,437.9865427,10.04904148]]
print(ls)
#输出
#[['日期', '芯片', '手机', '智能设备'], ['1日', 4556.448898, 1412.691145, 1070.940706], ['2日', 5857.880571, 1103.11709, 742.1934921], ['3日', 1435.169954, 672.2047677, 74.65002242], ['4日', 1448.831392, 437.9865427, 10.04904148]]
高维数据示例
d = { '北京总部营收' : [[ '日期' ,'芯片' ,'手机' ,'智能设备' ],\
['1日' ,5982.271554,667.7449328,681.8992432],\
[ '2日' ,947.6723447,1342.564086,624.4761491],\
['3日',1972.280153,196.8478844,407.7039686],\
['4日',5689.629183,88.42776056,868.5242993]], \
'上海中部营收' : [[ '日期' ,'芯片' ,'手机' ,'智能设备'],\
['1日' ,2560.440986,642.8313724,506.758806],\
['2日',2030.521018,551.9430133,1348.007136],\
['3日',2783.338123,1361.787513,144.9933128],\
['4日',5889.517584,401.0775644,363.2010706]], \
'深圳南部营收': [['日期' ,'芯片' ,'手机' ,'智能设备'],\
['1日',4556.448898,1412.691145,1070.940706],\
['2日',5857.880571,1103.11709,742.1934921],\
['3日',1435.169954,672.2047677,74.65002242],\
['4日',1448.831392,437.9865427,10.04904148]], \
'四川西部营收': [['日期' ,'芯片','手机' ,'智能设备'],\
['1日' ,697.6905941,1001.156037,1297.117534],\
['2日',248.3548823,1205.078142,2905.572037],\
['3日',1042.229159,167.3207017,5067.674268],\
['4日',1399.68792,233.1417131,1870.897907]]}
print(d)
#输出
#{'北京总部营收': [['日期', '芯片', '手机', '智能设备'], ['1日', 5982.271554, 667.7449328, 681.8992432], ['2日', 947.6723447, 1342.564086, 624.4761491], ['3日', 1972.280153, 196.8478844, 407.7039686], ['4日', 5689.629183, 88.42776056, 868.5242993]], '上海中部营收': [['日期', '芯片', '手机', '智能设备'], ['1日', 2560.440986, 642.8313724, 506.758806], ['2日', 2030.521018, 551.9430133, 1348.007136], ['3日', 2783.338123, 1361.787513, 144.9933128], ['4日', 5889.517584, 401.0775644, 363.2010706]], '深圳南部营收': [['日期', '芯片', '手机', '智能设备'], ['1日', 4556.448898, 1412.691145, 1070.940706], ['2日', 5857.880571, 1103.11709, 742.1934921], ['3日', 1435.169954, 672.2047677, 74.65002242], ['4日', 1448.831392, 437.9865427, 10.04904148]], '四川西部营收': [['日期', '芯片', '手机', '智能设备'], ['1日', 697.6905941, 1001.156037, 1297.117534], ['2日', 248.3548823, 1205.078142, 2905.572037], ['3日', 1042.229159, 167.3207017, 5067.674268], ['4日', 1399.68792, 233.1417131, 1870.897907]]}
四、项目案例
实现统计学生信息
ls = []
while True:
name = input('请输入您要投票的内容:')
if name != '结束':
ls.append(name)
else:
break
D = dict()
for vote in ls:
D[vote] = D.get(vote,0)+1
print(D)
#输出示例
#请输入您要投票的内容:张三
#请输入您要投票的内容:李四
#请输入您要投票的内容:张三
#请输入您要投票的内容:王五
#请输入您要投票的内容:赵六
#请输入您要投票的内容:结束
#{'张三': 2, '李四': 1, '王五': 1, '赵六': 1}