第 4 课 Python 更多数据存储类型
4.1 元组——Tuples
元组就像是一个使用小括号的列表。
4.1.1 元组的创建
学会了列表的创建之后,元组创建方法非常的简单。比如下面,我们创建一个汽车品牌名称的元组,然后打印输出来。
输入代码
# 在这里写上你的代码:-)
carTuples = ('奔驰', '奥迪', '法拉第', '吉利')
print(carTuples)
运行结果
同样,像列表那样,我们也可以通过索引的方式,来对已创建的元组中,查找汽车品牌的名称。
输入代码
# 在这里写上你的代码:-)
carTuples = ('奔驰', '奥迪', '法拉第', '吉利')
print(carTuples[2])
运行结果
这里,我们把变量carTuples定义为字符串奔奥迪、法拉第、吉利。 然后, 就像用列表一样,我们把元组中索引位置为2的元素打印出来: print(carTuples [2])。
4.1.2 元组中元素的操作
我们可以像列表那样使用“+”号,来对元组进行拼接相连的操作:
输入代码
# 在这里写上你的代码:-)
carTuples1 = ('奔驰', '奥迪', '法拉第', '吉利')
carTuples2 = ('VOLVO', 'JAC')
carTuples = carTuples1 + carTuples2
print(carTuples)
运行结果
元组与列表的主要区别在于元组一旦创建就不能再做改动了。例如,我们想要把元组carTuples中的第一个字符串替换成 “大众”的话,我们会得到一条错误信息:
输入代码
# 在这里写上你的代码:-)
carTuples = ('奔驰', '奥迪', '法拉第', '吉利')
carTuples[0] = '大众'
print(carTuples)
运行结果
那为什么还要用元组而不用列表呢?主要是因为有时候对一些你知道永远不会改变的事情还是很有用的。如果你创建一个由两个元素组成的元组,它里面将一直就放着这两个元素。
4.2 字典——Maps
4.2.1 字典是一组组的键与值
在Python里,像列表和元组一样,字典(diet,是dictionary的缩写。也叫map,映射)也是一堆东西的组合。字典与列表或元组不同的地方在于,字典中的每个元素都有一个键(key) 和一个对应的值(value)。字典正是由这一个个键值对(你也可以理解为,每一个数值的前面,都会有一个唯一的身份证号码)组成的数据集合。
例如,假设我们有一个列表,上面是一些人和他们最喜爱的运动。我们可以把这个信息放到Python 的列表中,把名字在前,把他们最喜爱的运动在后:
输入代码
# 在这里写上你的代码:-)
sports = [
'姚明,篮球',
'邓亚萍,乒乓球',
'林丹,羽毛球',
'丁俊晖,斯诺克'
]
print(sports[1])
运行结果
如果我问你丁俊晖最擅长的体育运动是什么,你可能要浏览这个列表才能找到答案:斯诺克。 但是如果列表中有 100 个(或者更多)人呢?
现在,如果我们把同样的信息放到字典中,把人名作为键,把他们喜爱的运动作为值,那么Python代码像这样来写:
输入代码
# 在这里写上你的代码:-)
sports = {
'姚明' : '篮球',
'邓亚萍' : '乒乓球',
'林丹' : '羽毛球',
'丁俊晖' : '斯诺克'
}
print(sports['丁俊晖'])
运行结果
我们用冒号把每个键和它的值分开,每个键和值都分别用单引号括起来。还要注意字典中的所有元素都是用大括号({})括起来的,而不是圆括号或者方括号。这样做的结果就得到了一个映射表(每个键对应一个特定的值),我们同样也可以用一张表示意出来:
Key Value
姚明 篮球
邓亚萍 乒乓球
林丹 羽毛球
丁俊晖 斯诺克
想要删除字典中的值,就要用到它的键。下面是如何删除的例子
输入代码
# 在这里写上你的代码:-)
sports = {
'姚明' : '篮球',
'邓亚萍' : '乒乓球',
'林丹' : '羽毛球',
'丁俊晖' : '斯诺克'
}
del sports['林丹']
print(sports)
运行结果
要替换字典中的值, 也要用到它的键:
输入代码
# 在这里写上你的代码:-)
sports = {
'姚明' : '篮球',
'邓亚萍' : '乒乓球',
'林丹' : '羽毛球',
'丁俊晖' : '斯诺克'
}
sports['丁俊晖'] = '台球'
print(sports)
运行结果
我们用丁俊晖作为键,把他最喜爱的运动从斯诺克改成了台球。
如你所见,使用字典与使用列表和元组类似,只是你不能用“+”号运算符来把两个字典连在一起。如果你试一下的话就会看到一条错误信息:
输入代码
# 在这里写上你的代码:-)
sports1 = {
'姚明' : '篮球',
'邓亚萍' : '乒乓球',
'林丹' : '羽毛球',
'丁俊晖' : '斯诺克'
}
sports2 = {
'李娜' : '网球',
'郭晶晶' : '跳水'
}
sports = sports1 + sports2
print(sports)
运行结果
4.3 水浒英雄代号查询——程序设计
喜欢看水浒传的人都知道,梁山泊上的108将都是有顺序的,如果想记清楚每一位英雄的名称以及号码顺序是比较难的一件事,那么现在我们来使用所学的知识来进行一场英雄大点兵的Python程序,我们不仅可以做到知道每一位英雄的名称以及号码顺序,我们还可以查询这名英雄在梁山泊上的职务信息,下面我们一起来试一下吧!
输入代码
# 在这里写上你的代码:-)
heroMap = {
'宋江' : '天魁星及时雨--总兵都头领',
'卢俊义' : '天罡星玉麒麟',
'吴用' : '天机星智多星--掌管机密军师',
'公孙胜' : '天闲星入云龙',
'关胜' : '天勇星大刀--马军五虎将、左军大将',
'林冲' : '天雄星豹子头--马军五虎将、右军大将',
'秦明' : '天猛星霹雳火--马军五虎将、先锋大将',
'呼延灼' : '天威星双鞭--马军五虎将、合后大将',
'花荣' : '天英星小李广--马军八骠骑、兼先锋使',
'柴进' : '天贵星小旋风--掌管钱粮头领',
'李应' : '天富星扑天雕',
'朱仝' : '天满星美髯公--马军八骠骑、兼先锋使',
'鲁智深' : '天孤星花和尚--步军头领',
'武松' : '天伤星行者',
'董平' : '天立星/天健星双枪将--马军五虎将、虎军大将',
'张清' : '天捷星/天玄星没羽箭--骠骑、兼先锋使',
'杨志' : '天暗星青面兽',
'徐宁' : '天祐星/天佑星金枪手'
}
print(heroMap['武松'])
运行结果
以上没有列举全部的梁山泊英雄信息,如果你想继续完善我们这个信息库,可以去图书馆或者网上查找所有的英雄信息,来把剩余的信息录入Python程序中,尝试着自己来编写一下吧!
4.4 智能故事大王——程序设计
在很多无聊的晚上,多么希望有一个能够陪自己小机器人,能抱着它玩耍,也能听它讲故事,偷偷告诉你,经过这几节课的学习,我们现在可以编写出讲故事的程序了。现在我们来一起做一个智能讲故事的Python程序吧!然后在Mu上运行,把自己设计程序故事讲给我们的伙伴听。
输入代码
# 在这里写上你的代码:-)
import random
storyTime = ('秦朝', '昨天', '今天', '上个世纪末', '风黑月高的晚上', '明朝')
storyPerson1 = ('阿里', '小强', '小莫', '阿毛', '旺财', '阿凯', '小鞋匠')
storyPerson2 = ('阿美', '嘟嘟', '小龙', '阿飞', '秋香', '越哥', '老铁匠')
storyPlace = ('菜市口', '学校', '北极', '洗手间', '游泳池', '被窝', '天空')
storyMatter = ('锻炼身体', '吃羊肉火锅', '唱歌', '洗澡', '侃大山', '战斗')
story = '故事发生在' + random.choice(storyTime) + ','
story = story + random.choice(storyPerson1) + '和'
story = story + random.choice(storyPerson2) + ','
story = story + '在' + random.choice(storyPlace) + ','
story = story + random.choice(storyMatter) + '。'
print(story)
运行结果
在上述的Python程序中,我们使用random(随机数)模块的choice()函数,来从我们创建的时间、人物、地点与事件字符串元组中随机选择字符,使用字符串拼接的方式为我们呈现故事的讲述。
读者朋友您们好,这是作者第一次写文章,难免经验有些不足!
如果您有什么意见和建议欢迎留言!!!
如果喜欢文章,希望能得到您的点赞鼓励!