一、列表
1. 什么是列表
- 一个列表需要使用中括号[]将所有数据框起来,里面中的每一个数据叫做“元素”, 元素与元素之间使用逗号隔开。
list=['李雷','韩梅梅',180,3.5]
print(list)
- 各种类型的数据(字符串、整数、浮点数)都能放在列表里面
2. 从列表中提取单个元素
- 列表中的各个元素,是有序排列的,每一个元素都有自己的位置标号,这个位置标号就叫做下标。
- 列表中的元素从左往右进行排列, 它们对应的下标从0,1,2开始逐渐递增。
- 所以,我们可以通过列表名搭配下标方式来提取列表中的元素,读取元素中的内容。
# 提取元素'大黄蜂'
transformers = ['擎天柱','大黄蜂','救护车']
print(transformers[1])
3. 从列表中提取多个元素
# 请看示例
transformers = ['擎天柱','大黄蜂','救护车','巨无霸福特','红蜘蛛']
print(transformers[:])
print(transformers[2:])
print(transformers[:2])
print(transformers[1:3])
print(transformers[2:4])
# 每次打印出来的内容都是不相同的。
-
通过冒号来截取列表元素的操作叫切片,就是将列表的某个片段,通过切割下标的方式来提取多个元素。
-
提取原则:冒号左边空,就要从下标为0的元素开始取。右边空,就要取到列表的最后一个元素。后半句:冒号左边数字对应的元素要拿,右边的不动
# 提取lily和lucy names = ['李雷','lily','lucy','韩梅梅'] print(names[1:3])
4. 给列表添加/删除元素
-
用append()函数给列表增加元素。append是 附加,追加,增加,增补的意思。
transformers = ['擎天柱','大黄蜂','救护车','巨无霸福特','红蜘蛛'] transformers.append('萨克巨人') print(transformers)
-
用del函数的语法是del 列表名[元素的下标],给列表删除元素
transformers = ['擎天柱','大黄蜂','救护车','巨无霸福特','红蜘蛛'] del transformers[2] print(transformers)
5. 小结
- 思考:
- 添加多个元素怎么操作?
- 在制定位置添加元素怎么操作?
- 删除多个元素怎么操作?
6. 列表的其他功能
1.列表拼接
list1 = [1,2,3,4]
list2 = [6,7,8,9]
print(list1+list2)
a = ['杨过','小龙女','神雕']
b = ['尹志平','黄蓉','郭靖']
print(a+b)
```
2.添加元素
- list.append(new)函数,添加新元素到列表中去,只能添加一个,默认添加在列表末尾
a = ['杨过','小龙女','神雕']
a .append('尹志平')
print(a)
- list.insert(index,new)函数,只能添加一个元素,可指定在具体的位置添加
a = ['杨过','小龙女','神雕']
a .insert(-1,'尹志平')
print(a)
3.追加序列的值。
-
list.extend()函数:在列表的末尾追加另一个列表的值
a = ['杨过','小龙女','神雕'] a.extend(['尹志平','洪七公']) print(a) list1 = [1,2,3,4] list2 = [6,7,8,9] list1.extend(list2) print(list1)
4.删除元素
-
del list[index]列表索引的函数:如前所述
-
list.pop(index)函数:返回被删除的元素,默认删除最后一个元素;可指定删除具体位置的元素并返回。可将返回的值赋值给新的变量
>>> list = [1,2,3,4,5]
>>> list.pop()
5
>>> print(list)
[1, 2, 3, 4]
>>> list = [1,2,3,4,5,6,]
>>> list.pop(2)
3
>>> print(list)
[1, 2, 4, 5, 6]
>>>
>>> name = ['杨过','小龙女','李靖','哪吒']
>>> print(name)
['杨过', '小龙女', '李靖', '哪吒']
>>> mc = name.pop(2)
>>> print(name)
['杨过', '小龙女', '哪吒']
>>> print(mc)
李靖
>>>
mylist = [20, 34, 56, 47, 58, 69,20,40,34,20]
option = int(input('请输入想要删除的数字:'))
for counter,x in enumerate(mylist):
if x == option:
num = mylist.pop(counter)
print(mylist)
print(num)
请输入想要删除的数字:20
[34, 56, 47, 58, 69, 40, 34]
20
-
list.remove(’‘元素’’):找到指定元素,再删除,但若列表中有重复的元素,只能删除列表中的第一个元素;若要删除列表中所有重复的元素,可采用count()和for循环进行操作。
>>> name = ['lily','lucy'] >>> name.remove('lily') >>> print(name) ['lucy'] >>> num=[20,40,56,67,78,20,30,20] >>> num.remove(20) >>> print(num) [40, 56, 67, 78, 20, 30, 20] >>> num = [20,30,40,30,20,20,50,20,34,20] >>> for i in range(num.count(20)): num.remove(20) print(num) [30, 40, 30, 50, 34]
-
list.clear(llist):清空列表。与del不同的地方在于,删除del删除整个列表后,系统提示name is not difined
>>> list1 = [1,2,3,4]
>>> list1.clear()
>>> print(list1)
[]
>>>
5. 反向输出
-
list.reserve():将列表元素进行反向排列
>>> name = ['小龙女','杨过','天山童姥','李莫愁'] >>> name.reverse() >>> print(name) ['李莫愁', '天山童姥', '杨过', '小龙女'] >>> >>> num = [1,2,3,4,5,6,] >>> num.reverse() >>> print(num) [6, 5, 4, 3, 2, 1] >>>
6.统计次数
- list.count(元素):统计列表中指定参数的出现次数
>>> num = [1,2,3,2,2,3,3,4,2,3,5,3] >>> num.count(2) 4 >>> >>> name = ['杨过','小龙女','小龙女','杨过','洪七公','郭靖','美国队长'] >>> name.count('杨过') 2 >>>
7.列表排序
- list.sort(reverse=True/False)。将列表按照ASCII表来 排序,reverse=True是降序
- 一般情况下,python将大写字母优先于小写字母处理,若要避免这种情况发生,将sort()变更为sort(key=str.lower)即可
>>> list = [1,2,5,7,10,2,54,34,76,34] >>> list.sort() >>> print(list) [1, 2, 2, 5, 7, 10, 34, 34, 54, 76] >>> list.sort(reverse=True) >>> print(list) [76, 54, 34, 34, 10, 7, 5, 2, 2, 1] >>> list.sort(reverse=False) >>> print(list) [1, 2, 2, 5, 7, 10, 34, 34, 54, 76] >>> >>> name = ['杨过','小龙女','小龙女','杨过','洪七公','郭靖','美国队长'] >>> name.sort() >>> print(name) ['小龙女', '小龙女', '杨过', '杨过', '洪七公', '美国队长', '郭靖'] >>> name.sort(reverse=True) >>> print(name) ['郭靖', '美国队长', '洪七公', '杨过', '杨过', '小龙女', '小龙女'] >>> >>> name=['My','is','Bill','name'] >>> name.sort() >>> print(name) ['Bill', 'My', 'is', 'name'] >>> name=['My','is','Bill','name'] >>> name.sort(key=str.lower) >>> print(name) ['Bill', 'is', 'My', 'name'] # 对大小写不敏感进行倒序排列 >>> name=['My','is','Bill','name'] >>> name.sort(key=str.lower,reverse=True) >>> print(name) ['name', 'My', 'is', 'Bill'] >>>
- sorted(list):临时排序
>>> b = ['tom','david','jack','monika'] >>> sorted(b) #按照字母临时排序 ['david', 'jack', 'monika', 'tom'] >>> print(b) #打印原有列表的顺序 ['tom', 'david', 'jack', 'monika'] >>> print(sorted(b)) #打印临时排序 ['david', 'jack', 'monika', 'tom'] >>>
8.查询所有元素
- list.[::]:查询显示该列表所有元素。注意:一个冒号也可以查询到所有元素。
>>> name = ['杨过','小龙女','小龙女','杨过','洪七公','郭靖','美国队长'] >>> name[::] ['杨过', '小龙女', '小龙女', '杨过', '洪七公', '郭靖', '美国队长'] >>>
9.list.inex(元素):返回索引值(下标)
names = ['Lihua', 'Rain', 'Jack', '秀秀', 'Peiqi', 'Blue', 'Black'] >>> print(names.index('Blue')) 5 >>>
10.修改元素
- list[list.index(旧元素)]=新元素:替换列表中的元素
>>> name = ['lucy','lily','tom','david','alex'] >>> name[name.index('lily')]='monika' >>> print(name) ['lucy', 'monika', 'tom', 'david', 'alex'] >>> >>> name = ['杨过','小龙女','李靖','哪吒'] >>> name[name.index('哪吒')]='托塔李天王' >>> print(name) ['杨过', '小龙女', '李靖', '托塔李天王'] >>>
- list[下标]=新元素
>>> name = ['杨过','小龙女','李靖','哪吒'] >>> name[3]='托塔李天王' >>> print(name) ['杨过', '小龙女', '李靖', '托塔李天王'] >>>
11.实时改变列表元素
- 可采取另外一个空列表的形式,将改变后的元素添加进空列表中
mylist = [20, 60, 500, 1200, 5000]
list=[]
for x in mylist:
list.append(x*3)
print(list)
# 输出结果为:[60, 180, 1500, 3600, 15000]
- 采用enumerate函数,返回列表的元素和下标
# enumerate的用法举例,可将列表、字符串、元祖返回下标和元素
# 同时可用start=x 设定起始返回的位置
>>> num=['lucy','lily','tom','david']
>>> print(list(enumerate(num)))
[(0, 'lucy'), (1, 'lily'), (2, 'tom'), (3, 'david')]
>>> name='黄晓明'
>>> print(list(enumerate(name)))
[(0, '黄'), (1, '晓'), (2, '明')]
>>> name=('黄晓明','杨天宝','宋小宝')
>>> print(list(enumerate(name)))
[(0, '黄晓明'), (1, '杨天宝'), (2, '宋小宝')]
>>> name=('黄晓明','杨天宝','宋小宝')
>>> print(list(enumerate(name,start=1)))
[(1, '黄晓明'), (2, '杨天宝'), (3, '宋小宝')]
# 使用enumerate函数实时批量修改列表元素
>>> mylist = [20,34,56,47,89,78]
>>> for counter,x in enumerate(mylist):
print('counter is',counter)
print('x is',x)
mylist[counter]=x
print(mylist)
# 输出结果为:
# counter is 0
# x is 20
# counter is 1
# x is 34
# counter is 2
# x is 56
# counter is 3
# x is 47
# counter is 4
# x is 89
# counter is 5
# x is 78
# [20, 34, 56, 47, 89, 78]
二、字典
1. 什么是字典
-
字典和列表很相似,都有名称、赋值号、逗号做间隔,逗号间隔的还叫元素。
而不一样的是,字典每个元素由键与值组成,而列表不是,字典外层使用大括号{}, 列表外层使用中括号[ ]。
transformers = ['擎天柱','大黄蜂','救护车','巨无霸福特','红蜘蛛'] fc = { '擎天柱': 95 ,'大黄蜂':90 ,'救护车':86, '巨无霸福特':80,'红蜘蛛':80 }
-
字典的元素由键与值组成,组成形式 键:值,冒号还是英文的冒号。‘擎天柱’: 95, 我们把’擎天柱’称为键,把95称为值。
-
这样键:值的形式,我们统称为键值对。
-
还可以使用len()函数来得到字典或列表的长度。len()函数括号里放字典或列表的名字。
transformers = ['擎天柱','大黄蜂','救护车','巨无霸福特','红蜘蛛'] fc = { '擎天柱': 95 ,'大黄蜂':90 ,'救护车':86, '巨无霸福特':80,'红蜘蛛':80 } print(len(transformers)) print(len(fc))
-
需要注意的是:字典中的键是唯一的,值是可以重复的。也就是说,字典里只能有一个‘擎天柱’的键,但是却可以有两个‘80’的值。
2. 从字典中提取元素
-
和列表相似,使用[ ],但是字典没有下标,只能通过键名提取,也就是字典名[键]。
fc = { '擎天柱': 95 ,'大黄蜂':90 ,'救护车':86, '巨无霸福特':80,'红蜘蛛':80 } print(fc['擎天柱'])
3. 给字典增加/删除元素
fc = { '擎天柱': 95 ,'大黄蜂':90 ,'救护车':86, '巨无霸福特':80,'红蜘蛛':80 }
del fc['巨无霸福特']
print(fc)
fc['巨无霸福特'] = 50
print(fc)
-
删除字典里键值对是使用del语句 del 字典名[键]。
-
而新增键值对是使用字典名[键]=值 。
fc = { '擎天柱': 95 ,'大黄蜂':90 ,'救护车':86, '巨无霸福特':80,'红蜘蛛':80 } fc['铁皮']=90 print(fc)
4. 小结
- 思考
- 增加多个元素怎么操作?
- 增加的元素要到具体的位置怎么操作?
- 删除多个元素怎么操作?
5.字典的其他功能
1.元素追加
- 直接添加
>>> desc = {'name':'杨过','sex':'男','age':38}
>>> print(desc)
{'name': '杨过', 'sex': '男', 'age': 38}
>>> desc ['wife']='小龙女'
>>> print(desc)
{'name': '杨过', 'sex': '男', 'age': 38, 'wife': '小龙女'}
>>>
- dic1.update(dict2):把字典dict2的键值对添加到dict1中。(如果dict1和dict2有相同的键,那么对应的值会以更新的为准,即取dict2的值)
>>> name = {'jack':18,'lucy':19,'lily':20}
>>> name2 = {'jack':20,'tom':21,'david':22}
>>> name.update(name2)
>>> print(name)
{'jack': 20, 'lucy': 19, 'lily': 20, 'tom': 21, 'david': 22}
>>>
- dic.update(key=新value):用新的值替换旧的值
>>> name = {'杨过':'小龙女的老公','小龙女':'杨过的姑姑','尹志平':'杨过的情敌'}
>>> name.update(杨过='绿帽子')
>>> print(name)
{'杨过': '绿帽子', '小龙女': '杨过的姑姑', '尹志平': '杨过的情敌'}
>>>
>>> D = {'name':128,'age':89}
>>> D.update(name=23)
>>> print(D)
{'name': 23, 'age': 89}
2.判断key是否存在
-
in/not in dict
name = {'jack':18,'lucy':19,'lily':20} >>> print('jack' in name) True >>> >>> print('大卫' in name) False >>>
3.字典中的查找
-
print(dict.keys()):查找都有哪些键
name = 'jack': 20, 'lucy': 19, 'lily': 20, 'tom': 21, 'david': 22} >>> print(name.keys()) dict_keys(['jack', 'lucy', 'lily', 'tom', 'david']) >>>
-
print(dict.values()):查找都有哪些值
>>> print(name.values()) dict_values([20, 19, 20, 21, 22]) >>>
-
print(dict.items()):查找所有键值对
>>> name = {'jack': 20, 'lucy': 19, 'lily': 20, 'tom': 21, 'david': 22} >>> print(name.items()) dict_items([('jack', 20), ('lucy', 19), ('lily', 20), ('tom', 21), ('david', 22)]) >>>
4.字典中的删除
-
del dict[keys]:如前所述
-
dict.clear():返回NONE
>>> name = {'jack': 20, 'lucy': 19, 'lily': 20, 'tom': 21, 'david': 22} >>> name.clear() >>> print(name) {} >>>
5.字典中的多层嵌套
>>> star = {'大陆':{'name':'蔡徐坤'},'港澳台':{'name':'周杰伦'}} >>> print(star) {'大陆': {'name': '蔡徐坤'}, '港澳台': {'name': '周杰伦'}} >>> print(star['大陆']) {'name': '蔡徐坤'} >>> print(star['大陆']['name']) 蔡徐坤 >>>
6.字典的遍历
>>> name = {'name':'lucy','sex':'female','age':'18'} >>> for i in name: print(i) print(i,name[i]) name name lucy sex sex female age age 18 >>> >>> name = {'name':'lucy','sex':'female','age':'18'} >>> for i in name: print(name[i]) lucy female 18 >>>
7.字典的特性:同一个键可以出现两次,但创建时如果同一个键被赋值2次,后一个值会被记住
>>> dict = {'name':'lucy','age':19,'sex':'female','age':22} >>> print(dict) {'name': 'lucy', 'age': 22, 'sex': 'female'} >>>
三、列表和字典的异同
-
不同点
- 列表外面是[ ]中括号,字典外面是{}大括号。
- 列表中每个元素只有一部分,只有值,每个值有一个对应的小标。
字典中每个元素都是【键:值】存在的, 每个值都有一个对应的键。
transformers = ['擎天柱','大黄蜂','救护车','巨无霸福特','红蜘蛛'] fc = { '擎天柱': 95 ,'大黄蜂':90 ,'救护车':86, '巨无霸福特':80,'红蜘蛛':80 }
-
相同点
- 列表与字典中的元素都是用逗号隔开。
- 删除的方法del相同。
transformers = ['擎天柱','大黄蜂','救护车','巨无霸福特','红蜘蛛'] del transformers[1] fc = { '擎天柱': 95 ,'大黄蜂':90 ,'救护车':86, '巨无霸福特':80,'红蜘蛛':80 } del fc['大黄蜂']
四、练习
-
有一个列表list = [‘hello’,‘i’,‘love’,‘you’].请将列表中的love取出来并打印结果。
# 第五节课练习 >>> list = ['hello','I','love','you'] >>> print(list[2]) love >>>
-
在童话镇里,狼人每天晚上都会起来,杀掉村里的一位平民。你需要将狼人查找出来,毒死他。
# 第五节课练习 >>> # 创建字典 >>> dic = {'女巫':29,'狼人':30,'平民':50,'猎人':40} >>> print(dic['狼人']) 30 >>>
-
现在有一个班的同学,含有小明、小红、小刚、熊大和熊二。后来大王和小王转学过来了,小红和熊大转学走了,请调整班级成员。
# 第五节课练习 >>> classroom = ['小明','小红','小刚','熊大','熊二'] >>> print(classroom) ['小明', '小红', '小刚', '熊大', '熊二'] >>> >>> classroom.extend(['大王','小王']) >>> print(classroom) ['小明', '小红', '小刚', '熊大', '熊二', '大王', '小王'] >>> >>> classroom = ['小明', '小红', '小刚', '熊大', '熊二', '大王', '小王'] >>> del classroom[1] >>> print(classroom) ['小明', '小刚', '熊大', '熊二', '大王', '小王'] >>> del classroom[2] >>> print(classroom) ['小明', '小刚', '熊二', '大王', '小王'] >>>
-
请将列表mv_list1中⾦刚狼到叶问的数据提取出来,再将叶问删除,并添加⼀个你喜
欢的电影名字
mv_list1 = [“⻄红柿⾸富”,“银河护卫队”,“⾦刚狼”,“银河补习班”,“叶问”,“狮⼦王”,"钢铁
侠"]
mv_list1 = ['西虹市首富','银河护卫队','金刚狼','银河补习班','叶问','钢铁侠','狮子王'] # 提取'金刚狼'到'叶问'的数据 print(mv_list1[2:5]) # 删除'叶问' print(mv_list1.index('叶问')) del mv_list1[4] print(mv_list1) # 添加一个我喜欢的电视 mv_list1.insert(-2,'神雕侠侣') mv_list1.append('不能说的秘密') print(mv_list1)
-
.=通讯录管理系统=
1.增加姓名和⼿机
2.删除姓名
3.修改⼿机
4.查询所有⽤户
5.根据姓名查找⼿机号
6.退出程序
要求:运⾏的代码终端可以看到上⾯这个界⾯,使⽤字典储存你的好友⼿机号,选择对应的
数字,
执⾏对应的功能,例如选择增加姓名和⼿机号,等待⽤户输⼊后将⼿机号和姓名⼀并储
存起来,并显示储存成功
(注意:⽤字典储存呦!)
print('''=======通讯录管理系统======= 1.增加姓名和手机 2.删除姓名 3.修改手机 4.查询所有用户 5.根据姓名查找手机号 6.退出程序 ''') dict ={'李雷':13678990098} while True: #条件为真,程序一直执行 answer =int(input('请输入需要执行的数字:')) if answer ==1: name = input('请输入您的姓名:') pwd = int(input('请输入您的手机号:')) dict[name]=pwd print(dict) elif answer ==2: name2 = input('请输入您要删除的姓名:') if name2 in dict: del dict[name2] print(dict) else: print('用户名不存在') elif answer ==3: name3 = input('请输入您要修改的姓名:') if name3 in dict: phone = int(input('请输入新的手机号:')) dict [name3]=phone print(dict) else: print('用户名不存在') elif answer ==4: for i in dict: print(i) elif answer ==5: name4 =input('请输入您要查询手机号的姓名:') if name4 in dict: print(dict[name4]) else: print('用户名不存在') elif answer ==6: print('您已成功退出程序') break #中断循环 else: print('输入的号码不合法,请重新输入')