abc.join(甲乙丙) 将abc 依次插入到甲乙丙中
甲abc乙abc丙
join( )可以把列表变成字符串
split( )可以把字符串变成列表
list在循环时不能删除元素,因为会改变索引,导致奇数位索引(1 3 5 7 )对应的元素会被跳过,无法被删除
解决方案是循环时记录下被删除的元素到另一个列表中,然后循环记录列表来删除原列表的元素
描述
Python 字典 fromkeys() 函数用于创建一个新字典,以序列 seq 中元素做字典的键,value 为字典所有键对应的初始值。不会对原字典产生影响.
语法
fromkeys() 方法语法:
dict.fromkeys(seq[, value])
注意: 当seq为字符串时, 字符串会被切割为单元素列表作为字典的键
dict.fromkeys("王健林","王思聪") 输出为: {'健':"王思聪",'王':"王思聪",'林':'王思聪'}
set( ) 中的元素,不重复,无序,必须是可hash(int,str,tuple,bool),可以认为set就是dic类型的数据,不保存value,只保存key.也用{}表示
set集合汇总的元素必须是可hash的,但是set本身是不可hash的,所以set自身不能嵌套存放, set可变.
set() 集合主要特征:元素不可重复,所以可用来去重
增加
s.add( ) 增加
s.update( ) 迭代增加
删除
s.pop( ) 随机删除
s.remove ( "删除元素")
s.clear( ) 清空
修改
没有索引,也没有办法定位一个元素,只能通过先删除后新增的方法进行修改
查询 set虽然不可hash但是可迭代
for el in s:
print(el)
常用操作
frozenset( ) 不可变,所以可hash,所以可以放到set( ) 里
列表进行赋值操作,实际上是引用内存地址的赋值,内存中此时只有一个列表,两个变量同时指向同一个列表,对其中的一个进行操作,两个都会跟着改变.
浅拷贝 copy 创建新对象 (只拷贝第一层)
lst2 = lst1.copy() 常用copy写法
lst2 = lst1[ : ] 字符串切片写法
对拷贝出来的对象进行操作不会影响原对象
列表数据被存储时是被存储的"地址"(类似指针)的东西,并非数据本身,所以会存在赋值和copy的差异问题
深拷贝 有别于浅拷贝,对内部所有层级的内容进行拷贝
import copy
lst1.deepcopy( )
为什么有深浅拷贝?
拷贝比创建对象的过程更快