列表和字典

366 阅读4分钟

列表和字典

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