风变Python之旅4---字典列表的学习

哈哈,在开始记录今天的学习记录之前,我需要先表扬一下我自己,没想到我能坚持这么久的来学习这次的风变Python编程课,我是不是很棒,很厉害呀,嘻嘻,我会继续学下去。

在编程的世界里,计算机有3种方式利用数据:
在这里插入图片描述
第一种:直接使用数据,比如print()语句,可以直接把我们提供的数据打印出来,通常所见即所得。
在这里插入图片描述
第三种,用于判断的数据:
在这里插入图片描述
这一章,我们会接触两种新的数据类型——列表和字典,你会发现,它们比我们学过的“整数、浮点数、字符串”更加高级,更有“包容性”。为什么这么说呢?前面学的几种类型,每次赋值只能保存一条数据。如果我们需要使用很多数据的时候,就会很不方便。而列表和字典的作用,就是可以帮我们存储大量数据,让计算机去读取和操作。

为了形象的理解列表,我们举个栗子:
假设你是一个五十个学生的班主任,你需要点名?你会怎么做呢?
第一天,班上来了50个新鲜的面孔。你让学生把名字写在花名册上,方便上课时一个个点名。如果只能用已学的知识来解决这个问题,我们需要将每个学生的名字都赋值到一个变量名,然后再分别打印。代码是这样的:

student1 = '党志文' 
student2 = '浦欣然'
student3 = '罗鸿朗'
......
student50 = '桂永怡'
print(student1+'在不在?')
print(student2+'在不在?')
......
print(student50+'在不在?')

这样的一段代码打下去,你会不会疯掉,在编程的世界里,最忌讳的就是无聊枯燥的,最没有价值的重复性劳动,因此,让我们来换一种思维,更好的来展现我们的数据。

实际上呢,只要学会了列表和循环(剧透:循环下一关会讲,可先忽略),3行代码就能搞定。

#直接运行代码即可
students = ['党志文', '浦欣然', '罗鸿朗', '姜信然', '居俊德', '宿鸿福', '张成和', '林景辉', '戴英华', '马鸿宝', '郑翰音', '厉和煦', '钟英纵', '卢信然', '任正真', '翟彭勃', '蒋华清', '双英朗', '金文柏', '饶永思', '堵宏盛', '濮嘉澍', '戈睿慈', '邰子默', '于斯年', '扈元驹', '厍良工', '甘锐泽', '姚兴怀', '殳英杰', '吴鸿福', '王永年', '宫锐泽', '黎兴发', '朱乐贤', '关乐童', '养永寿', '养承嗣', '贾康成', '韩修齐', '彭凯凯', '白天干', '瞿学义', '那同济', '衡星文', '公兴怀', '宫嘉熙', '牧乐邦', '温彭祖', '桂永怡']
for i in students:
    print(i+'在不在?')

在这里插入图片描述
怎么样,这个看上去,心情是不是瞬间顺畅了很多,哈哈~~~~开心。

发现了吗?在第一行代码里,赋值号右边不再像字符串那样只能放一个名字,而是放了50个。这就是我们要新认识的第一个数据类型——列表,下面我会从4个方面来介绍列表的用法。

什么是列表?
首先,我们来看看列表(list)的代码格式:
在这里插入图片描述
一个列表需要用中括号[ ]把里面的各种数据框起来,里面的每一个数据叫作“元素”。每个元素之间都要用英文逗号隔开。

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

list1=['小明',18,1.70]
print(list1) 

接下来,我们面对的问题是,列表虽然可以一次收纳多个数据,但是我们该如何单独的提取它其中的一个元素呢?

列表中具体的某个元素,要如何取出来?

这就涉及到一个新的知识点:偏移量。列表中的各个元素,好比教室里的某排学生那样,是有序地排列的,也就是说,每个元素都有自己的位置编号(即偏移量)。
在这里插入图片描述
从上图可得:
1.偏移量是从0开始的,而非我们习惯的从1开始;
2.列表名后加带偏移量的中括号,就能取到相应位置的元素。所以,我们可以通过偏移量来对列表进行索引(可理解为搜索定位),读取我们所需的元素。

比如,下面我们需要从以下的列表种提取第0个元素。

students = ['小明','小红','小刚']
print(students[0])

现在我们已经知道了如何从列表中取出一个元素,那如果要同时取好几个呢?所以我们接着学习如何从列表中取出多个元素。

从列表提取多个元素

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

print(list2[:])   ##提取列表中的全部元素
[5, 6, 7, 8, 9]

print(list2[2:])  ##提取列表中的第2个到最后一个位置上的元素
[7, 8, 9]

print(list2[:2])  ##提取列表中的位置0到位置2上的元素
[5, 6]

print(list2[1:3]) ##提取列表中的位置1到位置3上的元素
[6, 7]

print(list2[2:4]) ##提取列表中的位置2到位4上的元素
[7, 8]

上面这种用冒号来截取列表元素的操作叫作切片,顾名思义,就是将列表的某个片段拿出来处理。这种切片的方式可以让我们从列表中取出多个元素。

请你通过对以上代码的推理,选出正确的列表切片口诀:

左右空,取到头,左要取,右不取。

解释
前半句:冒号左边空,就要从偏移量为0的元素开始取;右边空,就要取到列表的最后一个元素。后半句:冒号左边数字对应的元素要拿,右边的不动。

Notice
另外,我们要注意一个细节:偏移量取到的是列表中的元素,而切片则是截取了列表的某部分,所以还是列表。

给列表增加/删除元素
1.首先,我们对列表进行添加元素,需要用到append()函数给列表增加元素,append的意思是附加,增补。

在这里插入图片描述
append后的括号里只能接受一个参数,但却给了两个,也就是4和5。所以,用append()给列表增加元素,每次只能增加一个元素。
在这里插入图片描述

注意第7行,是给append()追加一个列表元素。总结一下append()函数的特点。
在这里插入图片描述
那么在学完如何增加列表的元素后,我们需要如何才能进行下一步的删除列表中的元素呢?

下面学习里表中的元素的删除
需要用到del语句。请你先读一下Python官方文档对“del语句”的解释:(懂得阅读官方文档也是编程学习中一个重要能力)
del() 函数的使用

students = ['小明','小红','小刚','小美']
del students[1]
print(students)

['小明', '小刚', '小美']

在这里插入图片描述字典的学习

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

字典的格式特点
在这里插入图片描述
字典和例表的异同点
仔细看下,字典和列表

有3个地方是一样的:
1.有名称;
2.要用=赋值;
3.用逗号作为元素间的分隔符。

而不一样的有两处:
1.列表外层用的是中括号[ ],
字典的外层是大括号{ }

列表中的元素是自成一体的,而字典的元素是由一个个键值对构成的,用英文冒号连接。如’小明’:95,其中我们把’小明’叫键(key),95叫值(value)。

这样唯一的键和对应的值形成的组合,我们就叫做【键值对】,上述字典就有3个【键值对】:‘小明’:95、‘小红’:90、‘小刚’:90如果不想口算,我们可以用len()函数来得出一个列表或者字典的长度(元素个数),括号里放列表或字典名称。

这里需要强调的是,字典中的键具备唯一性,而值可重复。也就是说字典里不能同时包含两个’小明’的键,但却可以有两个同为90的值。

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

95

现在,我们尝试将小明的成绩从字典里打印出来。这就涉及到字典的索引,和列表通过偏移量来索引不同,字典靠的是键。
这便是从字典中提取对应的值的用法。和列表相似的是要用[ ],不过因为字典没有偏移量,所以在中括号中应该写键的名称,即字典名[字典的键]。

给字典增加/删除元素
种是先将原来的键值对删除,在重新给字典里的键值对赋值。
在这里插入图片描述
以上即为对原来的键值对进行修改,对新的键值对增加。

对字典进行小结

在这里插入图片描述

字典和列表的异同

共同点

1.在列表和字典中,如果要修改元素,都可用赋值语句来完成。所以,上面修改小刚成绩的时候,其实直接用赋值语句即可,del语句通常是用来删除确定不需要的键值对。

在这里插入图片描述
2.第二个共同点其实之前已经略有提及,即支持任意嵌套。除之前学过的数据类型外,列表可嵌套其他列表和字典,字典也可嵌套其他字典和列表。
在这里插入图片描述
在这里插入图片描述
接下来我们来看看如何提取字典嵌套字典的键值对
在这里插入图片描述

一个很重要的不同点是列表中的元素是有自己明确的“位置”的,所以即使看似相同的元素,只要在列表所处的位置不同,它们就是两个不同的列表。我们来看看代码:
在这里插入图片描述
而字典相比起来就显得随和很多,调动顺序也不影响。因为列表中的数据是有序排列的,而字典中的数据是随机排列的。

这也是为什么两者数据读取方法会不同的原因:列表有序,要用偏移量定位;字典无序,便通过唯一的键来取值。

最后,对于字典和列表相互嵌套的问题
一个口诀
字典取键,列表取偏移量,都用中括号。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值