python学习笔记07 join( ) set( )

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( )

 

为什么有深浅拷贝?

拷贝比创建对象的过程更快

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章