1、想一想
请问此时b的值为多少? 1
请问此时b的值为多少? [1, 2, 3]
2、引用传递
在python
中,值是靠引用来传递来的。
我们可以用id()
来判断两个变量是否为同一个值的引用。 我们可以将id值理解为那块内存的地址标识。
在Python中,通过变量2=变量1,去修改变量1的值 ,变量2的值会不会修改,跟变量1的类型有关系。、
如果变量1是可变类型,则变量2也会被修改。
如果变量1是不可变类型,则变量2不会被修改。
3、可变类型和不可变类型
可变类型,即值可以改变:
- 列表
list
- 字典
dict
不可变类型,即值不可以改变:
- 数值类型
int, long, bool, float
- 字符串
str
- 元组
tuple
- 布尔类型
4、字典的键不允许重复,而且必须是不可变类型
字典值可以是任何的 python
对象,既可以是标准的对象,也可以是用户定义的,但键不行。
-
不允许同一个键出现两次。
-
键必须不可变
所以可以用数值,字符串、元组或布尔充当,而用列表就不行。
5、思考
6、字典小结
-
通过键而不是通过索引来读取
字典有时也称为关联数组或者散列表(hash
)。它是通过键将一系列的值联系起来的,这样就可以通过键从字典中获取指定项,但不能通过索引来获取。 -
字典是任意对象的无序集合
字典是无序的,各项是从左到右随机排序的,即保存在字典中的项没有特定的顺序。这样可以提高查找效率。 -
字典是可变的,并且可以任意嵌套
字典可以在原处增长或者缩短(无须生成一个副本)。并且它支持任意深度的嵌套(即它的值可以是列表或者其他的字典)。 -
字典中的键必须唯一
不允许同一个键出现两次,如果出现两次,则后一个值会被记住。 -
字典中的键必须不可变
字典中的键是不可变的,所以可以使用数字、字符串或者元组,但不能使用列表。
7、练习
一、有字典dic = {"k1": "v1", "k2": "v2", "k3": "v3"}
,请完成如下操作:
(1)遍历字典 dic
中所有的key
(2)遍历字典 dic
中所有的value
(3)循环遍历字典 dic
中所有的key
和value
(4)添加一个键值对"k4
","v4
",输出添加后的字典dic
(5)删除字典 dic
中的键值对"k1
","v1
",并输出删除后的字典 dic
(6)删除字典 dic
中 ‘k5
’ 对应的值,若不存在,使其不报错,并返回None
。
(7)获取字典 dic
中“k2
”对应的值
(8)获取字典 dic
中"k6
"对应的值,如果不存在,使其不报错,并且让其返回数据 None
二、有字典 dic2 = {'k1':"v111",'a':"b"}
,通过一行操作使dic2 = {'k1':"v111",'k2':"v2",'k3':"v3",'k4': 'v4','a':"b"}
。
三、组合嵌套,现有列表如下:
list = [['k', ['qwe', 20, {'k1': ['tt', 3, '1']}, 89], 'ab']]
,实现功能如下
(1)将数字 3 变成字符串 ‘100’(两种方式)
(2)将列表中的字符串‘1’变成数字101(两种方式)