列表和字典
1. 列表
1.1 什么是列表
一个列表需要用中括号[ ]把里面的各种数据框起来,里面的每一个数据叫作“元素”。每个元素之间都要用英文逗号隔开。
list1 = ['小明',18,1.70]
print(list1)
#-> ['小明', 18, 1.7]
列表很包容,各种类型的数据(整数/浮点数/字符串)无所不能包。
1.2 从列表提取单个元素
可以通过偏移量来对列表进行索引(可理解为搜索定位),读取我们所需的元素。
students = ['小明','小红','小刚']
print(students[0])
#-> 小明
1.3 从列表提取多个元素
使用元素索引,取出对应的元素
list2 = [5,6,7,8,9]
print(list2[:])
print(list2[2:])
print(list2[:2])
print(list2[1:3])
print(list2[2:4])
#->
[5, 6, 7, 8, 9]
[7, 8, 9]
[5, 6]
[6, 7]
[7, 8]
上面这种用冒号来截取列表元素的操作叫作切片,顾名思义,就是将列表的某个片段拿出来处理。这种切片的方式可以让我们从列表中取出多个元素。 偏移量取到的是列表中的元素,而切片则是截取了列表的某部分,所以还是列表 速记法则:左右空, 取到头;左要取,右不取.
1.4 给列表增加/删除元素
使用append函数给列表添加元素
students = ['小明','小红','小刚']
students.append('小美')
print(students)
#-> ['小明', '小红', '小刚', '小美']
使用del函数,结合元素索引删除列表中的元素
students = ['小明','小红','小刚','小美']
print(students)
del students[3]
print(students)
#->
['小明','小红','小刚','小美']
['小明', '小红', '小刚']
事实上del语句非常方便,既能删除一个元素,也能一次删除多个元素(原理和切片类似,左取右不取)
2. 字典
2.1 什么是字典
字典的外层是大括号{ } 字典的元素是由一个个键值对构成的,用英文冒号连接。如'小明':95,其中我们把'小明'叫键(key),95叫值(value) 字典中的键具备唯一性,而值可重复 可以用len()函数来得出一个列表或者字典的长度(元素个数),括号里放列表或字典名称
students = ['小明','小红','小刚']
scores = {'小明':95,'小红':90,'小刚':90}
print(len(students))
print(len(scores))
2.2 提取字典的元素
scores = {'小明': 95, '小红': 90, '小刚': 90}
print(scores['小明'])
#-> 95
2.3 给字典增加/删除元素
scores = {'小明':95,'小红':90,'小刚':90}
del scores['小刚']
print(scores)
scores['小刚'] = 92
scores['小美'] = 85
print(scores)
#->
{'小明': 92, '小红': 90}
{'小明': 92, '小红': 90, '小刚': 90, '小美': 85}
3. 列表和字典的异同
3.1 列表和字典的不同
1、列表中的元素是有自己明确的“位置”的,所以即使看似相同的元素,只要在列表所处的位置不同,它们就是两个不同的列表 列表中的数据是有序排列的,而字典中的数据是随机排列的 这也是为什么两者数据读取方法会不同的原因:列表有序,要用偏移量定位;字典无序,便通过唯一的键来取值
print(1 == 1)
# 1等于1,所以值为True
print(1 == 2)
# 1不等于2,所以为False
students1 = ['小明','小红','小刚']
students2 = ['小刚','小明','小红']
print(students1 == students2)
scores1 = {'小明':95,'小红':90,'小刚':100}
scores2 = {'小刚':100,'小明':95,'小红':90}
print(scores1 == scores2)
#-> True
#-> False
#-> False
#-> True
3.2 列表和字典的相同点
1、在列表和字典中,如果要修改元素,都可用赋值语句来完成
list1 = ['小明','小红','小刚','小美']
list1[1] = '小蓝'
print(list1)
dict1 = {'小明':'男'}
dict1['小明'] = '女'
print(dict1)
#-> ['小明', '小蓝', '小刚', '小美']
#-> {'小明': '女'}
2、支持任意嵌套
(1) 列表嵌套列表
students = [['小明','小红','小刚','小美'],['小强','小兰','小伟','小芳']]
print(students[1][1])
#-> 小兰
(2) 字典嵌套字典
scores = {
'第一组':{'小明':95,'小红':90,'小刚':100,'小美':85},
'第二组':{'小强':99,'小兰':89,'小伟':93,'小芳':88}
}
print(scores['第一组']['小刚'])
#-> 100
(3) 列表和字典相互嵌套
students = {
'第一组':['小明','小红','小刚','小美'],
'第二组':['小强','小兰','小伟','小芳']
}
scores = [
{'小明':95,'小红':90,'小刚':100,'小美':85},
{'小强':99,'小兰':89,'小伟':93,'小芳':88}
]
print(students['第一组'][2])
print(scores[0]['小刚'])
#-> 小刚
#-> 100