列表

  1. list1=['小明',18,1.70]
  2. 2
  3. print(list1)
  4. # 打印出 ['小明',18,1.70]

小知识
如果想只打印出内容没有括号标点符号的可以使用元组 tuple 格式 print(tuple[0],tuple[1],tuple[2])
打印出结果 小明 18 1.70
L4-19.png

从列表提取单个元素

  1. students = ['小明','小红','小刚']
  2. print(students[0])
  3. # 打印出 小明

从列表提取多个元素

  1. list2 = [5,6,7,8,9]
  2. print(list2[:])
  3. # 打印出[5,6,7,8,9]
  4. print(list2[2:])
  5. # 打印出[7,8.9] 截断前2位[5,6]冒号右边空则从左往右取到低
  6. print(list2[:2])
  7. # 打印出[5,6] 冒号左边空从第一位[5]开始取 冒号后面是2则取两位 [5,6]
  8. print(list2[1:3])
  9. #打印出[6,7] 冒号左边是1截断第1位[5] 冒号右边是3则取三位5,6,7截断5=[6,7]
  10. print(list2[2:4])
  11. #打印出[7,8] 截断第1和第2位[5,6] 取四位 5678截断56 = [7,8]

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

  1. students = ['小明','小红','小刚']
  2. print(students[:2])
  3. #打印出结果 ['小明','小红'] 从左往右取两位

以下有两种方式打印出 ‘小刚’

  1. students = ['小明','小红','小刚']
  2. print(students[2]) #小明第0位所以[2]是'小刚' [2]=第3位
  3. print(students[2:]) #截断前两位 得出 '小刚'

给列表增加/删除元素

append 添加

  1. students = ['小明','小红','小刚']
  2. students.append('小美') #在['小明','小红','小刚']里面添加一个'小美'
  3. print(students)
  4. #打印出结果 ['小明','小红','小刚','小美']

del 删除

  1. ['小明','小红','小刚','小美']
  2. 0 1 2 3
  3. del students[1] #删除第一位小红
  4. #打印出结果 ['小明','小刚','小美']

总结
L4G-12-2019119151347.png

字典

什么是字典?
L4-21.png
仔细看下,字典和列表有3个地方是一样的:
1.有名称;
2.要用=赋值;
3.用逗号作为元素间的分隔符。

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

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

len() 函数

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

  1. students = ['小明','小红','小刚']
  2. scores = {'小明':95,'小红':90,'小刚':90}
  3. print(len(students))
  4. print(len(scores))
  5. #打印出结果 3
  6. # 3 代表有三位数值

从字典中提取元素

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

  1. scores = {'小明': 95, '小红': 90, '小刚': 90}
  2. print(scores['小明']) 打印出小明的分数
  3. #打印出结果 95

和列表相似的是要用[ ],不过因为字典没有偏移量,所以在中括号中应该写键的名称

给字典增加/删除元素

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

  1. scores = {'小明':95,'小红':90,'小刚':90}
  2. scores['小刚']=92 #修改小刚的值
  3. scores['小美']=85 #增加小美和值
  4. print(scores)
  5. #打印出结果{'小明':95,'小红':90,'小刚':92,'小美':85}

修改小刚成绩的时候,直接用赋值语句即可,del语句通常是用来删除确定不需要的键值对
总结
L4-17-2019117164032.png

列表字典的不同点

  1. # 如果==左右两边相等,值为True,不相等则为False。
  2. print(1 == 1)
  3. # 1等于1,所以值为True
  4. print(1 == 2)
  5. # 1不等于2,所以为False
  6. students1 = ['小明','小红','小刚'] #列表
  7. students2 = ['小刚','小明','小红']
  8. print(students1 == students2)
  9. scores1 = {'小明':95,'小红':90,'小刚':100} #字典
  10. scores2 = {'小刚':100,'小明':95,'小红':90}
  11. print(scores1 == scores2)
  12. #打印出结果 False #列表
  13. # True #字典

为什么列表的数据对比不一样而字典一样呢?
因为列表中的数据是有序排列的,而字典中的数据是随机排列的。
而字典相比起来就显得随和很多,调动顺序也不影响。
这也是为什么两者数据读取方法会不同的原因:列表有序,要用偏移量定位;
字典无序,便通过唯一的键来取值。

列表字典的共同点

在列表和字典中,如果要修改元素,都可用赋值语句来完成。看一下代码:

  1. list1 = ['小明','小红','小刚','小美']
  2. list1[1] = '小蓝'
  3. print(list1)
  4. #打印出结果 ['小明', '小蓝', '小刚', '小美']
  5. dict1 = {'小明':'男'}
  6. dict1['小明'] = '女'
  7. print(dict1)
  8. #打印出结果 {'小明': '女'}

字典进阶嵌套

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

列表嵌套列表

先来看看第一种情况:列表嵌套列表。你在班级里成立了以四人为单位的学习小组。
这时,列表的形式可以写成:

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

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

  1. students = [['小明','小红','小刚','小美'],['小强','小兰','小伟','小芳']]
  2. print([1][3])
  3. #打印出结果 小芳

字典嵌套字典

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

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

列表和字典相互嵌套

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