2019/07/31_course_python_5_字典和列表以及互相嵌套

目前,我们已经掌握了3种数据类型:整数、浮点数、字符串。这一关我们就要学习两种新的数据类型:列表、字典。

前三种类型 每次赋值只能保存一条数据。如果我们需要使用很多数据的时候,就会很不方便。 而列表和字典 就是可以帮我们存储大量数据,让计算机去读取和操作。

 

计算机和数据的关系:

2019/07/31_course_python_5_字典和列表以及互相嵌套_第1张图片

第一种:直接使用数据,比如print()语句,可以直接把我们提供的数据打印出来,通常所见即所得。

第二种: 将两个print语句,计算机都是先【计算和加工数据】,再把print()括号里的数据打印到屏幕里。

例如:

print(3+2*3)
print('欢迎来到'+'第4关')

终端就会显示 9  欢迎来到第4关

第三种:计算机根据逻辑命令进行判断。

#列表

啥是列表?list 

2019/07/31_course_python_5_字典和列表以及互相嵌套_第2张图片

中括号里的内容就是列表元素。一个列表需要用中括号[ ]把里面的各种数据框起来,里面的每一个数据叫作“元素”。每个元素之间都要用英文逗号隔开。

列表很包容,各种类型的数据(整数/浮点数/字符串)无所不能包。 可以同时包括整数,字符串和浮点数。

##从列表中提取单个元素

这就涉及到一个新的知识点:偏移量。列表中的各个元素,好比教室里的某排学生那样,是有序地排列的,也就是说,每个元素都有自己的位置编号(即偏移量)。

2019/07/31_course_python_5_字典和列表以及互相嵌套_第3张图片

从上图可得:1.偏移量是从0开始的,而非我们习惯的从1开始;2.列表名后加带偏移量的中括号,就能取到相应位置的元素

##从列表提取多个元素

list2 = [5,6,7,8,9]
print(list2[:]) #取全部
print(list2[2:]) #取偏移量2之后的
print(list2[:2]) #取偏移量2之前的
print(list2[1:3]) #取偏移量为1和3
print(list2[2:4]) #取偏移量为2和4

终端输出结果为:

[5, 6, 7, 8, 9]
[7, 8, 9]
[5, 6]
[6, 7]
[7, 8]
 

冒号来截取列表元素的操作叫作切片,顾名思义,就是将列表的某个片段拿出来处理。这种切片的方式可以让我们从列表中取出多个元素。而第二行代码,取【:】是指全取.需要注意的是,切片取出的还是列表,例如上述例子,终端输出的都为带了【】的列表。而如果我们用print(list2[2])则输出结果为元素。

##给列表增加/删除元素

需要用到append()函数给列表增加元素,append的意思是附加,增补。

用append()给列表增加元素,每次只能增加一个元素。

students = ['小明','小红','小刚']
students.append('小美')
print(students)

就把小美加到了列表里。

将元素从列表里删除, 需要用到del语句

2019/07/31_course_python_5_字典和列表以及互相嵌套_第4张图片

事实上del语句非常方便,既能删除一个元素,也能一次删除多个元素(原理和切片类似,左取右不取)。

2019/07/31_course_python_5_字典和列表以及互相嵌套_第5张图片

#数据类型:字典

类似这种名字和数值(如分数、身高、体重等)两种数据存在一一对应的情况,用第二种数据类型——“字典”(dictionary)来存储会更方便。

2019/07/31_course_python_5_字典和列表以及互相嵌套_第6张图片

字典和列表有3个地方是一样的:1.有名称;2.要用=赋值;3.用逗号作为元素间的分隔符。而不一样的有两处:1.列表外层用的是中括号[ ],字典的外层是大括号{ }

students = ['小明','小红','小刚']
scores = {'小明':95,'小红':90,'小刚':90}

我们可以用len()函数来得出一个列表或者字典的长度(元素个数),括号里放列表或字典名称。

字典的元素是由一个个键值对构成的,用英文冒号连接我们把字典里的元素 小明 叫 key, 把分数叫value。这里需要强调的是,字典中的键具备唯一性,而值可重复。也就是说字典里不能同时包含两个'小明'的键,但却可以有两个同为90的值。

##从字典中提取元素

例如:

scores = {'小明': 95, '小红': 90, '小刚': 90}
print(scores['小明'])

终端就会显示:95

这便是从字典中提取对应的值的用法。和列表相似的是要用[ ],不过因为字典没有偏移量,所以在中括号中应该写键的名称,即字典名[字典的键]

##给字典增加/删除元素

删除字典里键值对的代码是del语句del 字典名[键],而新增键值对要用到赋值语句字典名[键] = 值

例如:小刚的分数错了,要从90改到92, 新来的小美的成绩忘了加在成绩单上

scores = {'小明':95,'小红':90,'小刚':90} #原始字典
del scores['小刚']
scores['小刚'] = 92
scores['小美'] = 85
print(scores)

终端输出即为最终的字典

2019/07/31_course_python_5_字典和列表以及互相嵌套_第7张图片

##列表和字典的不同点

一个很重要的不同点是列表中的元素是有自己明确的“位置”的 (偏移值),所以即使看似相同的元素,只要在列表所处的位置不同,它们就是两个不同的列表。

而字典相比起来就显得随和很多,调动顺序也不影响(因为字典中的键是唯一的)。因为列表中的数据是有序排列的,而字典中的数据是随机排列的。

所以,列表有序,要用偏移量定位;字典无序,便通过唯一的键来取值。

##列表和字典的相同点

第一个共同点:在列表和字典中,如果要修改元素,都可用赋值语句来完成。

第二个共同点其实之前已经略有提及,即支持任意嵌套。除之前学过的数据类型外,列表可嵌套其他列表和字典,字典也可嵌套其他字典和列表。

例如:列表嵌套列表。

你在班级里成立了以四人为单位的学习小组。这时,列表的形式可以写成:

students = [['小明','小红','小刚','小美'],['小强','小兰','小伟','小芳']]

当我们在提取这种多级嵌套的列表/字典时,要一层一层地取出来,就像剥洋葱一样:

2019/07/31_course_python_5_字典和列表以及互相嵌套_第8张图片

如果我们要取出小芳,就先剥第一层,看到她在第二个子列表里,然后呢, 在第二个表的第3个是她的偏移值。所以取出小芳的代码:

students = [['小明','小红','小刚','小美'],['小强','小兰','小伟','小芳']]
print(students[1][3])

例二: 字典嵌套字典。

和列表嵌套列表也是类似的,需要一层一层取出来,比如说要取出小芳的成绩,代码是这样写:

scores = {
    '第一组':{'小明':95,'小红':90,'小刚':100,'小美':85},
    '第二组':{'小强':99,'小兰':89,'小伟':93,'小芳':88}
    }
print(scores['第二组']['小芳'])

例三: 看看列表和字典相互嵌套的情况

# 最外层是大括号,所以是字典嵌套列表,先找到字典的键对应的列表,再判断列表中要取出元素的偏移量
students = {
    '第一组':['小明','小红','小刚','小美'],
    '第二组':['小强','小兰','小伟','小芳']
    }
print(students['第一组'][3])
#取出'第一组'对应列表偏移量为3的元素,即'小美'

# 最外层是中括号,所以是列表嵌套字典,先判断字典是列表的第几个元素,再找出要取出的值相对应的键
scores = [
    {'小明':95,'小红':90,'小刚':100,'小美':85},
    {'小强':99,'小兰':89,'小伟':93,'小芳':88}
    ]
print(scores[1]['小强'])
#先定位到列表偏移量为1的元素,即第二个字典,再取出字典里键为'小强'对应的值,即99。

这一节重点是如何从列表/字典中取和添加元素,以及列表和字典的嵌套。

 

 

 

你可能感兴趣的:(python,course_python)