文章目录

  • 第七章 可变对像 元组与字典
    • 1. 元组快速入门
      • 1.1 元组的创建
      • 1.2 元组的取值
      • 1.3 元组的另类形式,一个逗号
      • 1.4 元组解包
    • 2. 可变对象
      • 2.1 两种修改对象的方式
      • 2.2 改变值不一定改变对象
      • 2.3 对象改变了值也可能相同
      • 2.4 举例练习
    • 3. 字典
      • 3.1 创建一个字典
      • 3.2 字典的使用
        • 3.2.1 官方文档查看
        • 3.2.2 用dict()函数来创建字典
        • 3.2.3 dict()将包含有双值子序列的序列转换成字典
        • 3.2.4 通过字典的键来获取字典的元素
        • 3.2.5 get()函数获取字典里的值
        • 3.2.6 get(key,[default])函数获取字典中的值
        • 3.2.7 修改字典
        • 3.2.8 d.setdefault()向字典中添加键值对
        • 3.2.9 update()方法
        • 3.2.10 删除键值对
          • 3.2.10.1 用del删除
          • 3.2.10.2 popitem()方法随机删除字典中的一个元素
          • 3.2.10.3 pop()根据指定的key来删除元素
        • 3.2.11 clear()清空字典
    • 4. 作业
      • 4.1 写博客梳理本节内容
      • 4.2 课堂代码敲三遍
      • 4.3 课堂作业
        • 4.3.1 字典练习,找指定的值
        • 4.3.2 字典练习,创建字典

第七章 可变对像 元组与字典

1. 元组快速入门

  • 元组是不可变序列
  • 当希望这个数据不改变的时候用元组,其余情况用列表。

1.1 元组的创建

tup=()
print(tup,type(tup))

用()可以创建一个空元组。

1.2 元组的取值

tup=(1,2,3,4,5,6,7)
print(tup[0])


元组的取值方法跟列表相同,不同的是元组不能被修改,如果按照列表的方法修改则会报错,如:

tup=(1,2,3,4,5,6,7)
tup[0]=8
print(tup)


报错显示,元组对象不支持元素赋值。

1.3 元组的另类形式,一个逗号

元组可以加括号,也可以不加括号,元组的元素用逗号隔开就行,元组如果不是空的,至少有一个逗号。

tub=10,
print(tub,type(tub))

tub='王朝','马汉','张龙','赵虎'
print(tub)

1.4 元组解包

可以把元组里的元素赋值给指定的变量。

tub=10,20,30,40
a,b,c,d=tub
print('a=',a)
print('b=',b)
print('c=',c)
print('d=',d)


像这样把元组中的每一个元素赋值给一个变量,叫着元组的解包
注意:

  • 解包时元素的数目和接收元素的变量的数目要保持一致,否则会报错
  • 如果遇到解包时接收元组元素的变量不够,需要以列表的方式将多个元素赋值给其中一个变量,则将该变量前加*即可。
  • 元素的个数少于变量的个数则会报错
tub=10,20,30,40
a,b,*c=tub
print('a=',a)
print('b=',b)
print('c=',c)


换个变量接收多元素

tub=10,20,30,40
a,*b,c=tub
print('a=',a)
print('b=',b)
print('c=',c)


再换个变量接收多元素

tub=10,20,30,40
*a,b,c=tub
print('a=',a)
print('b=',b)
print('c=',c)


其中的规律大家应该自己已经看明白了,我就不总结了。

2. 可变对象

可变序列属于可变对象的一种。一个对象包括了这三个东西:

  • id 标识
  • type 类型
  • value 值

2.1 两种修改对象的方式

这里有一个列表

a=[1,2,3,4,5,6]

现在有两种改变这个对象的方法:

a=[1,2,3,4,5,6]
a[0]=10
print(a)
print(id(a))


这种方法是改变了变量的值,但是没有改变变量所指向的对象

a=[1,2,3,4,5,6]
a=[7,8,9,10,11]
print(a)
print(id(a))

这种方法是对变量重新赋值了,改变了变量指向的对象

2.2 改变值不一定改变对象

再看一个例子

a=[1,2,3]
b=a
print('a=',a,id(a))
b[0]=10
print('a=',a,id(a))
print('b=',b,id(b))

当我们修改了一个变量的值,如果有其他变量也指向这个对象,则这个变量的值也改变,但对象却是一个对象。

2.3 对象改变了值也可能相同

再看一个例子:

a=[1,2,3]
b=a
print('a=',a,id(a))
b[0]=10
print('a=',a,id(a))
print('b=',b,id(b))
b=[10,2,3]
print('b=',b,id(b))

这次是重新赋值,对象改变了。
所以,关于可变对象,对象和值的关系,通过这些例子,相信你心中有数了。

2.4 举例练习

例题:

a=[1,2,3]
b=[1,2,3]
print(a==b)
print(a is b)
print('a',id(a))
print('b',id(b))

结果

3. 字典

字典是一种方便查找的数据存储方式;是一种新的数据结构,称之为映射

  • 字典和列表一样,都是存储数据的形式
  • 列表存储数据方便,但是查询数据没有字典方便
  • 字典每个元素都有一对键值对组成,可以快捷的通过键来查询对应的值(key-value)结构
  • 每个键值对,我们成为一项(item)

3.1 创建一个字典

a={'name':'葫芦娃','sex':'男','age':10}
print(a['name'],a['sex'],a['age'])

结果

可以很方便的取出我们要的结果值
注意:

  • 字典的键最好不用重复,如果重复,后面的值会取代前面相同键的值
  • 字典里项如果比较多,为了方便查看也可以实现竖向排列
a = {'name': '葫芦娃','sex': '男','age': 10
}# 可以用快捷键ctrl+shift+alt+L自动调整代码格式(也可以点击上方菜单里的code>reformat code)如下图:

3.2 字典的使用

3.2.1 官方文档查看

3.2.2 用dict()函数来创建字典
d=dict(name='葫芦娃',sex='男',age='10')
print(d,type(d))

结果

3.2.3 dict()将包含有双值子序列的序列转换成字典

双值序列 指有两个值的序列,如:‘gk’, (‘w’,1), [4,5]
子序列 序列中的元素也是个序列。如:[(‘w’,1), [4,5],(1,2)]

d=dict([('name','葫芦娃'),('age',10)])
print(d)

结果

3.2.4 通过字典的键来获取字典的元素

语法:
d[key]
key值一定要加上引号,不然会当作变量来处理

d=dict([('name','葫芦娃'),('age',10)])
print(d['age'])

结果

或者可以这样

d=dict([('name','葫芦娃'),('age',10)])
n='age'
print(d[n])


结果一样,但如果直接这样:

d=dict([('name','葫芦娃'),('age',10)])
print(d[age])

就会报错

3.2.5 get()函数获取字典里的值
d=dict([('name','葫芦娃'),('age',10)])
print(d.get('name'))

结果

假如没有这个键,也不会报错,而是会返回一个None值。

d=dict([('name','葫芦娃'),('age',10)])
print(d.get('name1'))

结果

3.2.6 get(key,[default])函数获取字典中的值

default也可以指定一个默认值来作为第二个参数,如果这个键存在则返回对应的值,如果取不到这个key则返回默认值

d=dict([('name','葫芦娃'),('age',10)])
print(d.get('name1','这个键不存在'))

结果

3.2.7 修改字典

语法格式

d=dict([('name','葫芦娃'),('age',10)])
d['name']='钢铁侠'


通过

字典名['新键']='新值'

的格式可以添加键值对

d=dict([('name','葫芦娃'),('age',10)])
d['name1']='孙悟空'
print(d)

结果

可以看到,再原来字典的基础上又添加了键值对。
如果这个键和里面的键重复,则直接覆盖原来的值。

d=dict([('name','葫芦娃'),('age',10),('name1','孙悟空')])
print(d)
d['name1']='猪八戒'
print(d)

结果

可以看到原来’name1’的值’孙悟空’已经被新的值’猪八戒’覆盖了。

3.2.8 d.setdefault()向字典中添加键值对
  • 这种方法,如果新添加的key值已经存在,则返回key值,不对字典做任何的修改
  • 如果新添加的key值不存在,则对字典添加新的键值对
d=dict([('name','葫芦娃'),('age',10)])
d.setdefault('name','金刚侠')
print(d)
d.setdefault('name2','沙和尚')
print(d)

结果

3.2.9 update()方法

update()将其他字典的键值添加到当前字典中

d=dict([('name','葫芦娃'),('age',10)])
d2={'name3':'孙悟空','name4':'猪八戒','name5':'沙和尚'}
d.update(d2)
print(d)
print(d2)


如果要有重复的key将被后面的覆盖。

3.2.10 删除键值对
3.2.10.1 用del删除
d={'name': '葫芦娃', 'age': 10, 'name3': '孙悟空', 'name4': '猪八戒', 'name5': '沙和尚'}
del d['name']
del d['age']
print(d)

结果

3.2.10.2 popitem()方法随机删除字典中的一个元素

默认删除字典中最后的一个元素
语法格式

d={'name': '葫芦娃', 'age': 10, 'name3': '孙悟空', 'name4': '猪八戒', 'name5': '沙和尚'}
d.popitem()
print(d)
d.popitem()
print(d)


popitem()会把删除的元素当作返回值

d={'name': '葫芦娃', 'age': 10, 'name3': '孙悟空', 'name4': '猪八戒', 'name5': '沙和尚'}
r=d.popitem()
print(d)
print(r)

3.2.10.3 pop()根据指定的key来删除元素

pop()删除元素也又返回值,返回的是删除的元素的value

d={'name': '葫芦娃', 'age': 10, 'name3': '孙悟空', 'name4': '猪八戒', 'name5': '沙和尚'}
r=d.pop('name3')
print(d)
print(r)

结果


如果要删除的指定key在原来的字典里不存在则会报错

d={'name': '葫芦娃', 'age': 10, 'name3': '孙悟空', 'name4': '猪八戒', 'name5': '沙和尚'}
r=d.pop('name6')
print(d)
print(r)

结果

当然可以传入第二个参数,避免报错,即pop(key,[default])

d={'name': '葫芦娃', 'age': 10, 'name3': '孙悟空', 'name4': '猪八戒', 'name5': '沙和尚'}
r=d.pop('name6','这个key不存在')
print(d)
print(r)

结果

3.2.11 clear()清空字典

语法结构

d.clear()

例如

d={'name': '葫芦娃', 'age': 10, 'name3': '孙悟空', 'name4': '猪八戒', 'name5': '沙和尚'}
d.clear()
print(d)

4. 作业

4.1 写博客梳理本节内容

4.2 课堂代码敲三遍

4.3 课堂作业

4.3.1 字典练习,找指定的值

在字典a = {“name”:“123”,“data”:{“result”:[{“src”:“python1”},{“src”:“python2”},
{“src”:“python3”}]}} 找到python1/python2/python3

答案

a = {"name":"123","data":{"result":[{"src":"python1"},{"src":"python2"},{"src":"python3"}]}}
v_1=a['data']['result'][0]['src']
v_2=a['data']['result'][1]['src']
v_3=a['data']['result'][2]['src']
print(v_1)
print(v_2)
print(v_3)

结果

4.3.2 字典练习,创建字典

有如下值列表[11,22,33,44,55,66,77,88,99,90], 将所有大于66的值保存至字典的第一个key
中,将小于66值保存至第二个key的值中

答案

a=[11,22,33,44,55,66,77,88,99,90]
lst_1=[]
lst_2=[]
for i in a:if int(i)>66:lst_1.append(i)elif:if int(i)<6:lst_2.append(i)
num=dict(num_1=lst_1,num_2=lst_2)
print(num)

结果

可变对像+元组与字典2020-11-10相关推荐

  1. 2020.11.10课堂笔记(Apache Spark 分布式计算原理)

    Spark WordCount运行原理 一.RDD的依赖关系 为什么需要划分Stage 数据本地化- 移动计算,而不是移动数据 保证一个Stage内不会发生数据移动 Lineage:血统.遗传 RDD ...

  2. 输入一会整数,输出所有质素因子2020.11.10

    //输入一会整数,输出所有质素因子 #include <stdio.h> int main() { int num, i; scanf("%d", &num); ...

  3. 2020.11.10丨BSA基础知识及产品介绍

    产品介绍 BSA产品介绍 1.1研究目的 基因定位 1.2基本概念 Bulked Segregant Analysis,分离群体分组分析法 定义: 在性状分离的遗传群体中 ,选择表型极端差异个体将其D ...

  4. python实验题第四章_「Python」2020.03.16学习笔记 | 第四章列表、元组、字典-习题(11-13)...

    学习测试开发的Day74,真棒! 学习时间为1H 第四章列表.元组.字典-习题(11-13) 11.求两个集合的交集和并集 代码 list1=[1,2,3,4] list2=[2,3,5,5] def ...

  5. QIIME 2教程. 26为QIIME 2开发新插件DevelopingPlugin(2020.11)

    文章目录 为QIIME 2开发新插件 概述Overview 插件组件Plugin components 定义功能Define functionality 创建一个函数并注册为方法 Create a f ...

  6. python基础语法合集-Python基础语法(四)—列表、元组、字典、集合、字符串

    列表 基本概念列表是有序的元素集合,所有元素放在一对中括号中,用逗号隔开,没有长度限制: 列表索引值以0为开始值,-1为从未尾的开始位置. 列表可以使用+操作符进行拼接,使用*表示重复. 当列表元素增 ...

  7. 13-19 Python Number、Python字符串、Python列表(List)、集合的基本操作、元组、字典Dicttionnary、日期和时间

    13 Python Number Python Number数据类型用于存储数值. 数据类型是不允许改变的,这就是意味着如果改变Number数据类型的值,将重新分配内存空间. 以下实例在变量赋值时Nu ...

  8. python123江湖秘籍_江湖秘籍,python基本数据类型之列表、元组、字典

    一.列表(list) li=[1,23,'123','name',['洪新武',['45',78]'乌鸦'],'alex',True] 列表格式 1列表中可以嵌套任何类型. 2.列表是以中括号[]括起 ...

  9. 04.Python基础_列表_元组_字典_集合

    文章目录 1.列表 1.1list 2.列表的索引和切片 练习1 提取数据 练习2 用索引取出下面list的指定元素: 3.修改列表的元素值 4.列表的常用方法 4.1append添加元素(与exte ...

最新文章

  1. NullPointerException 的处理新方式,Java14 真的太香了!
  2. 一键生成HTML4和WAP站
  3. 软件开发中部分代码的注解
  4. ssh免密码和ssh-copy-id命令
  5. StringBuffer
  6. remote: Incorrect username or password ( access token )
  7. Codeup 墓地——1814: 剩下的树
  8. security面试_41 道 Spring Boot 面试题,帮你整理好了!
  9. DeepWalk: Online Learning of Social Representations-1
  10. php tp框架文档,Thinkphp 框架基础之入口文件功能、定义与用法分析
  11. java俄罗斯方块程序_java基础俄罗斯方块
  12. 华为数通ensp命令(一)
  13. Pycharm安装教程 (2022最新版)
  14. OrCAD多页原理图器件按页编号的设置
  15. react redux mysql_实现React-redux的基本功能
  16. 专访 | 外媒看FAST:刘慈欣说的黑暗森林法则成立吗
  17. 25 个漂亮的体育运动网站的设计
  18. WCS(仓库控制系统)开发思想记录
  19. mysql嵌套查询详解_MySQL嵌套查询实例详解_MySQL
  20. 《51单片机》用STC-ISP-15XX-V6.85F烧录程序的步骤

热门文章

  1. Fastadmin管理Mysql_Fastadmin笔记
  2. MyBatis中的collection使用方法
  3. 去中心化数字身份DID简介——三、用户属性的选择性披露
  4. 搭建 dicom 开发环境
  5. 互联网巨头的自白:那些年,救我于水火的投资人
  6. 重阳节绘画软件测试,幼儿园重阳节绘画.docx
  7. 学习PowerMILL必懂的应用技巧
  8. anaconda如何查看库,安装库和更新库
  9. 《机器学习》赵卫东学习笔记 第13章推荐系统(课后习题及答案)
  10. 拖动缩放组件(vue-drag-zoom)