python笔记day6
补充: == 和 is
== --- 判断两个数据的值是否相等
is --- 判断地址是否相等
python数据存储:
1.给变量赋值的时候,如果数据的类型是数字或者字符串,不会直接开辟空间存数据,
而是现在数字字符串对应的缓存区里面去查看是否已经存储过对应的数据。如果已经
存了,直接将之前的数据对应的地址付给变量。如果没有存储才会开辟空间存储数据。
其他类型的数据,都是直接开辟空间存储数据,然后把地址返回
2.容器类型中的元素,在容器中不是直接存的值,而是元素值对应的地址
一、列表赋值
a.直接使用一个列表变量给另一个列表变量赋值,赋的是地址。
赋完之后,对其中一个列表进行增删改,会影响另一个
b.如果赋值的时候赋的列表的切片或者拷贝,会产生新的地址,然后使用新的地址赋值。
赋完值之后,两个列表相互之间不影响。
现象1:
list1 = [1,2,3]
list2 = list1
list2.append(100)
print(list1) #[1,2,3,100]
现象2:
list1 = [1,2,3]
list2 = list1[:]
list2.append(100)
print(list1) #[1,2,3]
二、列表中的方法
1、列表.count(元素) --- 获取指定元素在列表中出现的次数
2、列表1.extend(序列) --- 将序列中所有的元素都添加到列表中
3、列表.index(元素) --- 获取指定元素在列表中的下标
注意:a.如果元素有多个,只取第一个的下标
b.如果这个元素不存在,会报错(ValerError)
4、列表.reverse() ---- 反向列表(将列表元素倒序)
5、列表.sort() ---- 对列表进行升序排序(从小到大)
列表.sort(reverse=True) ---- 对列表进行降序排序(从大到小)
注意:a.列表的元素类型必须一样 b.元素支持比较运算符
6、列表.clear() --- 清空列表
7、列表.copy() --- 将列表中元素直接复制产生一份新的列表。和列表[:]效果一样
注意:这的拷贝是浅拷贝
三、浅拷贝和深拷贝
import copy #拷贝模块
copy.copy(对象) --- 浅拷贝 (直接拷贝元素的值产生一个新的地址)
copy.deepcopy(对象) --- 深拷贝 (不会直接复制地址,而是将地址对应的值拷贝一份产生新的地址)
四、 元组
1.什么是元组(tuple)
元组就是不课表的列表。有序不可变
有序 -- 可以通过下标获取值元素
不可变 --- 不支持增删改
2.元组的字面量:通过小括号将多个元素括起来,多个元素之间用逗号隔开。
a.只有一个元素的元组:在元素的后面必须加一个逗号
tuple1 = (元素1,)
b.直接将多个数据用逗号隔开不用括号括起来,还是一个元组值
tuple3 = 1,2,3,4,5,6
c.获取元组元素
#可以通过变量个数和元组元素个数保持一致来获取元素中的每一个元素
tuple4 = (10,20)
x,y = tuple4
#通过在变量前加*,获取没有*号的变量获取到的元素的剩余部分。以列表形式返回
tuple5 = ('王',98,99,100,101)
name,*scores = tuple5
print(name,scores) # 王 [98, 99, 100, 101]
#了解一下
tuple1 = (1,2,3)
list1 = ["aa","bb","cc"]
print(*list1) #aa bb cc
3.获取元组元素或获取列表一模一样
4.相关运算和列表一模一样
5.元组相关的方法 只有列表中的count和index
五、字典
1、什么是字典(dict)
字典是python中内置的容器类的数据类型,可变,无序的。字典的元素是键值对
2、字典的字面量:使用大括号括起来,大括号中是键值对,多个键值对用逗号隔开
键值对 --- 键:对
键(key) --- 不可变的;唯一的 一般使用字符串作为key
值(value) --- 任何数据都可以做为值
dict1 = {'aa':100,10:'abc',(10,20):'hello'}
什么时候使用字典
如果一个容器存储的数据不同意义数据(数据之间需要区分),就使用字典。
五、字典的增、删、改、查
1.查 (获取字典的值)
a. 获取单个值
字典[key] --- 获取key对应的值(value)(注意key不存在,会报错:KeyError)
字典.get[key] --- 获取key对应的值(value)(注意key不存在,不会报错,并且会返回一个默认值None)
None是python中的关键字,表示一个特殊值(没有,空的意思)
2.遍历
直接遍历字典拿到的是字典中所有的key
例子:for i in dict1:
print(i)
直接遍历字典拿到的是字典中的键值对 (看着方便但性能差,内存消耗多)
例子:for key,value in dict1.items():
print(key,value)
3.增(添加键值对)
字典[key] = 值 ------ 当key不存在的时候,就是在字典中添加键值对
字典1.update(序列) ---- 将序列中的元素转换成键值对,添加到字典1中
注意:在这的序列要求是能够转换成字典的序列。序列中的元素是只有两个元素的小序列
当key值有重名的时候,会用序列中键值对对应的值,更新原字典的key对应的值
4.改(修改key对应的值)
字典[key] = 值 --- 当key存在的时候,就是修改key对应的值
5.删(删除键值对)
a、 del 字典[key]
b、字典.pop[key] 取出字典中key对应的值(删除整个键值对)
c、删除最后一个键值对(取出最后一个键值对,以元组的形式返回)- 无意义
value = 字典.popitem()
print(字典,value)