[Python]清华毕业大佬整理的Python基础22大知识点,自备热水,这货有点干( 三 )


list.copy() :返回列表对象的浅拷贝 。 很厉害!!它可以改变列表的ID!
**浅拷贝——只拷贝一层 。 **如果拷贝对象只有一层 , 那么同b = a[:
, 两个变量相互独立的 。 但如果拷贝对象只有一层 , 就会有影响 , 会跟着改变 。
!!列表推导式:
[新元素表达式 for 临时变量 in 可迭代对象 if 条件表达式

【[Python]清华毕业大佬整理的Python基础22大知识点,自备热水,这货有点干】16、集合类型
集合中的元素没有顺序 , 且不重复 。 集合set是可变的 , 用大括号表示 。
但是{表示空字典;set()表示空集合 , 用set()创建集合时 , 会将元素一个一个拆开 , 如’hello’变成’h’‘e’‘l’‘l’‘o’ 。
集合中元素要是固定数据类型:整数、浮点数、字符串、元组等 。 不可为可变的列表、字典、集合 。
利用集合过滤掉重复的元素 。
4种基本操作:交(&)、并(|)、差(-)、补(^)
S.add() ;S.clear() ;S.copy() ; S.remove() ;len(S) ;x (not)in S ;
**S.pop():随机返回S中的一个元素 , 如果S为空 , 产生KeyError.(区分list.pop([index
))
特有的:S.discard(X);如果x在S中 , 移除x , 不在 , 不报错 。
主要三大用途:成员关系测试、元素去重、删除数据项 。
17、字典类型(映射)
{建(key):值(value) 。 键不能重复 , 且是不可变对象 。 值可变 。 元素没有顺序 。
创建一个空字典:dict() ;创建字典:dict(‘a’=1‘b’=2)/dict(‘a’:1‘b’:2)/dict((‘a’1)(‘b’2))
查找值:Dict[key
;修改键值:dict[key
= new_value ;增添新键值:dict[new_key
= new_value .
D.keys():返回所有键的列表如dict_keys([‘a’ ‘b’ ‘c’
);
D.values():返回所有值的列表如dict_values([1 2 3
);
D.items():返回所有的键值对的列表如dict_items([(‘a’ 1) (‘b’ 2) (‘c’ 3)
);
D.get(keyv):键存在则返回相应值 , 否则返回None(自定义了v时 , 返回v的内容);
D.pop(key.value):键存在则返回相应值 , 同时删除键值对 , 否则返回None;
D.popitem():随机取出一个键值对 , 以元组(key , value)形式返回;
D.setdefault(kv):如果键k存在 , 返回对应值 , 否则添加项目k = vv默认为None;
D.update(dict):更新或添加键值对;
D.clear():删除所有的键值对;
del.D[key
:删除key对应的键值对 。 如果key不存在 , 则抛出KeyError 。遍历:
for 变量名 in 字典名:
18、可变与不可变(关于值)
可变:列表(有序)、集合(无序)、字典(无序)
不可变:字符串(有序)、元组(有序)
Python是基于值的内存管理方式 , 举例:a=[123
b=[123
, a==b成立 。但是id(a)与id(b)不相等 , id(a[0
)==id(b[0
)成立 。 总结就是关乎值的就相等
什么叫可变?即值是可变的 , 但id是固定不变的 。 例如可变的列表 , 修改列表L中的一个元素的值 , 列表L的id是不变的 。
不管是可变还是不可变的序列类型:
(1)分片必定产生新的序列;
(2)“+”号在等号右边(L=L+[i
) , 必定产生新的序列 。 然后将新的序列地址赋予给等号左边的变量 。 (每一次执行时都会将原列表复制一次 , L指向新列表 , 并在新列表中加入新元素)
对三种列表添加方法进行总结:
(1)L=L+[i
在每一次执行时都会将原列表复制一次 , L指向新列表 , 并在新列表中加入新元素 。
(2)L.append(i)只是将新元素直接添加到原列表中 , 不会产生新列表 。
(3)L+=[i
的执行效果和L.append(i)类似 , 也是在原列表中直接添加元素 , 不会复制原列表 。


推荐阅读