1.列表与字典就像整型、浮点型、字符串一样,也是一种数据类型。区别在于,前者可以储存大量数据。

2.计算机利用数据的三种方式:

1 直接使用数据
2 计算和加工数据
3 用数据做判断

【列表】

什么是列表

例如我们要点名,用前面学的知识,只能这样:

student1 = '党志文'
student2 = '浦欣然'
student3 = '罗鸿朗'
student4 = '姜信然'
student5 = '居俊德'
student6 = '宿鸿福'
print(student1+'在不在?')
print(student2+'在不在?')
print(student3+'在不在?')
print(student4+'在不在?')
print(student5+'在不在?')
print(student6+'在不在?')

运行结果

白天干在不在?
瞿学义在不在?
那同济在不在?
衡星文在不在?
公兴怀在不在?
宫嘉熙在不在?
牧乐邦在不在?
温彭祖在不在?
桂永怡在不在?

用列表+循环:

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

一次就可以放很多同学的名字。如果元素是整型、浮点型,则不需要引号。

从列表提取单个元素

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

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

所以,我们可以通过偏移量来对列表进行索引(可理解为搜索定位),读取我们所需的元素。

假如你现在要喊小明来回答问题,用代码怎么写呢?请补充下列代码,利用列表的偏移量来打印出’小明’这个元素。

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

从列表中提取多个元素

list2 = [5,6,7,8,9]
print(list2[:]) #  提醒:下列:左右两边的数字指的是列表中元素的偏移量,偏移量(索引)始终是从0开始的。
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]  #  左开右闭

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

切片原则:“左右空,取到头;左要取,右不取”
冒号左边空,就要从偏移量为0的元素开始取;右边空,就要取到列表的最后一个元素。后半句:冒号左边数字对应的元素要拿,右边的不动(可再回顾下代码)。

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

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

运行结果:

小刚
['小刚']

给列表增、删元素

过了一周,你正上着课呢,教导主任突然领了一个新学生“小美”,说是转校生,要插到你们班。这时,我们就需要用到append()函数给列表增加元素,append的意思是附加,增补

append后的括号里只能接受一个参数。所以,用append()给列表增加元素,每次只能增加一个元素(可以是一个列表)。

append函数并不生成一个新列表,而是让列表末尾新增一个元素。而且,列表长度可变,理论容量无限,所以支持任意的嵌套。

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

运行结果:

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

而删除呢,需要用到del语句。先读一下Python官方文档对“del语句”的解释:

将’小红’从列表中删除,并打印出来:(语法是:del 列表名[元素的索引])

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

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

【字典】

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

什么是字典


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

而不一样的有两处:
1.列表外层用的是中括号[ ],字典的外层是大括号{ };
2.列表中的元素是自成一体的,而字典的元素是由一个个键值对构成的,用英文冒号连接。如’小明’:95,其中我们把’小明’叫键(key),95叫值(value)。

这样唯一的键和对应的值形成的组合,我们就叫做【键值对】,上述字典就有3个【键值对】:‘小明’:95、‘小红’:90、‘小刚’:90

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

这里需要强调的是,字典中的键具备唯一性,而值可重复。(如果你不小心声明了两个以’小明’为键的【键值对】,后出现的【键值对】会覆盖前面的【键值对】。)

从字典中提取元素

我们尝试将小明的成绩从字典里打印出来。这就涉及到字典的索引,和列表通过偏移量来索引不同,字典靠的是键。

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

运行结果:

95

给字典删、增元素

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

album = {'周杰伦':'七里香','王力宏':'心中的日月'}
del album['周杰伦']

那么,请你把小刚的成绩改成92分吧。对了,新来的小美也考了,得了85。请你对字典里进行修改和新增,然后将整个字典都打印出来。

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

列表与字典的不同

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

# 如果==左右两边相等,值为True,不相等则为False。
print(1 == 1)
# 1等于1,所以值为Trueprint(1 == 2)
# 1不等于2,所以为Falsestudents1 = ['小明','小红','小刚']
students2 = ['小刚','小明','小红']
print(students1 == students2)
#  false
scores1 = {'小明':95,'小红':90,'小刚':100}
scores2 = {'小刚':100,'小明':95,'小红':90}
print(scores1 == scores2)
#  true

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

相同点

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

list1 = ['小明','小红','小刚','小美']
list1[1] = '小蓝'
print(list1)dict1 = {'小明':'男'}
dict1['小明'] = '女'
print(dict1)

所以,上面修改小刚成绩的时候,其实直接用赋值语句即可,del语句通常是用来删除确定不需要的键值对。

scores = {'小明':95,'小红':90,'小刚':90}
#del scores['小刚']
#如果只需要修改键里面的值,可不需要del语句
scores['小刚'] = 92

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

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

students这个列表是由两个子列表组成的,现在有个问题是:我们要怎么把小芳取出来呢?

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。```#  作业:
下面,介绍一种新的数据类型:元组(tuple)。 可以看到:元组和列表很相似,不过,它是用小括号来包的。
元组和列表都是序列,提取的方式也是偏移量,如 tuple1[1]、tuple1[1:]。另外,元组也支持任意的嵌套。
请你根据以上提供的信息,将tuple1中的A和list2中的D打印出来。看到了,理解了,运用了,就能够掌握了。```python
tuple1 = ('A','B')
list2 = [('A','B'),('C','D'),('E','F')]print(tuple1[0])
print(list2[0][0])

完整作业如下:

list1 = [{'嫉妒':'envy'},{'恨':'hatred'},{'爱':'love'}]
print(list1[2]['爱'])# 第一步:取出列表中的第三个元素(list1[2]),字典{'爱':'love'};
# 第二步:取出list1[2]中键'爱'所对应的值,即'love’(list1[2]['爱'])。dict1 = {1:['cake','scone','puff'],2:['London','Bristol','Bath'],3:['love','hatred','envy']}
print(dict1[3][0])# 第一步:取出字典中键为3对应的值(dict1[3]),即['love','hatred','envy']。
# 第二步:再取出列表['love','hatred','envy']中的第一个元素(dict1[3][0])。tuple1 = ('A','B')
list2 = [('A','B'),('C','D'),('E','F')]print(tuple1[0])
print(list2[1][1])# 从代码里,也可看出:1.元组内数据的提取也是用偏移量;2.元组也支持互相嵌套。

自用【Python学习记录】——列表、字典相关推荐

  1. Python学习 数据结构列表字典元组

    本章节我们主要结合前面所学的知识点来介绍Python数据结构. 1.元组结构(Tuple) 元组由不同的元素组成,每个元素可以存储不同类型的数据,如字符串.数字甚至元组.元组创建后不能修改. 元组通常 ...

  2. Python学习记录——십 列表

    格式 [数据1, 数据2, 数据3, ........] 常用操作 查找 下标,list[0]这种 函数 index(),如果找不到,会报错 count() 这两个同字符串中的功能作用一样 len() ...

  3. Python学习记录day3

    2019独角兽企业重金招聘Python工程师标准>>> Python学习记录 day3 今天是银角大王武sir讲课.先回顾了上节课所学,然后讲到了面向对象思想. set set是一个 ...

  4. Python学习笔记:字典(dict)

    Python学习笔记:字典(dict) 字典(dict)可能是最重要的Python内置数据结构,更常用的名称是哈希映射(hash map)或关联数组(associate array).它是键值对的集合 ...

  5. python学习记录——容器篇

    容器 字符串 下标(索引) # 下表也称为是索引,是一个整型数字,可以是正数,也可以是负数 # 正数下标是从0开始的,表示第一个字符,-1表示最后一个字符 my_str = 'hello'h e l ...

  6. Python学习记录day6-反射、常用模块

    Python学习记录day6-反射.常用模块 @(学习)[python] Python学习记录day6-反射常用模块 反射 常用模块 1 sys System-specific parameters ...

  7. python ui bs_Guibs的Python学习_列表

    Guibs 的 Python学习_列表# 列表# 列表由一系列按特定顺序排列的元素组成, 其中元素和元素之间可以没有任何关系 # 在 Python 中, 用方括号 [] 来表示列表, 并用逗号 , 分 ...

  8. 【Python学习记录】Numpy广播机制(broadcast)

    ✨ 博客主页:小小马车夫的主页 ✨ 所属专栏:Python学习记录 文章目录 一.什么是Numpy广播机制 二.Numpy广播应用 三.Numpy广播规则 一.什么是Numpy广播机制 在Numpy. ...

  9. Python学习记录——英文名修改成标准格式

    Python学习记录--英文名修改成标准格式 功能需求 把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字.输入:['adam', 'LISA', 'barT'],输出:['Adam', ...

  10. Opencv+Python学习记录9:掩膜(掩码)的使用(内附详细代码)

    一,基本概念 OpenCV中的很多函数都会指定一个掩模,也被称为掩码,例如: 计算结果=cv2.add(参数1,参数2,掩模) 当使用掩模参数时,操作只会在掩模值为非空的像素点上执行,并将其他像素点的 ...

最新文章

  1. leetcode 46 java,leetcode46.java
  2. 9、ShardingSphere 之 Sharding-Proxy 读写分离
  3. c++ long 转 short_C精品编程之——C语言的数据类型、运算符、表达式,精品课程...
  4. 【MFC系列-第22天】GDI算法实战——过渡色
  5. 我们需要打造有意识的人工智能吗?
  6. 南京理工大学计算机学院教师信息网,南京理工大学教师信息
  7. maven安装与创建多模块项目【转】
  8. java二进制命令_Java二进制指令代码解析
  9. python连接pymysql主机目标无响应_Python 解析pymysql模块操作数据库的方法
  10. 《博弈论与生活》思维导图
  11. PCL学习笔记(3)——openni2_grabber从相机获取点云数据
  12. 当前页面的video只播放一个
  13. 个人博客网站升级http为https
  14. 如何修复Word文档XML提示
  15. Manifest Permissions
  16. Unity3d 在 twitter 转载(周报) 2018.11.10
  17. u盘装puppy linux,将PuppyLinux安装到U盘
  18. FastAdmin 系统配置的使用
  19. ubuntu 安装awvs
  20. AndroidBAT高级面试合集——Binder 通信原理与机制,音视频开发工程师

热门文章

  1. 全球顶尖大学已将区块链加入其课程
  2. 从性格色彩认知了解自己
  3. Linux常用命令——lsmod命令
  4. 匹兹堡大学约翰斯敦计算机学院,美国匹兹堡大学解析:研究生申请
  5. 基于Docker容器的DevOps应用方案
  6. java英雄国度加速版_谷得游戏 - 评价 | TapTap 发现好游戏
  7. Linux 基本操作 看完这篇Linux基本的操作就会了
  8. 删除数组最后一个元素
  9. 用python做通讯录包括姓名地址qq_我是如何用Python获取整个学校女生电话和QQ?技术撩妹...
  10. 485之modbus通讯协议学习笔记