Python 学习日记 第七天
日常鸡汤:
你快别努力了,躺着比向前冲舒服
一、基本类型数据补充
1. 补充字符串的一个基本操作
str.join(str) 把前面的字符串插入到括号里面的字符串中
1 s = "alex" 2 3 d = '_'.join(s) 4 print(d) # 输出 a_l_e_x
2.有序列表和无需字典的循环删除分析:
2.1有序列表的循环删除
1 li =[11,22,33,44] 2 for e in li: 3 li.remove(e) 4 print(li) # 输出 [22,44]
分析原因:for的运行过程中,会有一个指针来记录当前循环的元素是那一个,一开始这个指针指向第0个,然后获取到第0个元素,紧接着删除第0个,这个时候,原来是第一个元素会自动变成第0个,然后指针向后移动一次,指向1元素,这时原来的1已经变成了0,也就不会删除了。
接下来尝试了del删除,和pop删除,但是都不太好使。所以,只有用另一个列表先记录你要删除的内容,然后循环删除
1 li = [11,22,33,44] 2 3 del_li = [] 4 5 for e in li: 6 del_li.append(e) 7 8 for e in del_li: 9 li.remove(e) 10 11 print(li) # 输出[]
注意:由于删除元素会导致元素的索引改变,所以容易出现问题,尽量不要在循环中直接去删除元素,可以把要删除的元素添加到另一个集合中,然后在批量删除
2.2 无序字典的循环删除
1 2 3 4 li = {'name':'alex','age':18,'add':'sh'} 5 6 for key in li.keys(): 7 del li[key] 8 9 print(li) 10 11 12 13 14 # 会报错 15 16 # RuntimeError: dictionary changed size during iteration
3. dict中的fromkey()
fromkey() 可以通过一个序列帮我们创建一个字典,然后返回值为这个字典(切记,有返回值,对原字典不改变)
1 dic =dict.fromkeys('abc','abb') 2 print(dic) # {'a': 'abb', 'b': 'abb', 'c': 'abb'}
4.类型的转换
元组-----》列标 list(tuple)
列表-----》元组 tuple(list)
能够转换成False的数据;
0,‘’,None,[],{},(),set() ====> False
二、set集合
set集合是python中的一个基本数据类型,一般不是很常用,set中的元素是不重复,无序的,里面的元素必须是可以hash的,简言之,set就是dict类型的数据,但是里面不存Value,只保存key, set也用{}表示
1.增
add(str) # 添加字符串的内容
update(str) # 迭代更新
2.删除
pop() # 随意弹出一个
remove() # 删除指定的元素,但是不存在就会报错
clear() # 清空set
3.修改
因为无需,所以无法定位,采取先删除后增加的方法
4.查询
set是一个可迭代的对象,所以用for进行循环
三、深浅拷贝
定义: 深拷贝是对于一个对象所有层次的拷贝(递归)copy.deepcopy
浅拷贝是对于一个对象的顶层拷贝;通俗的理解是:拷贝了引用,并没有拷贝内容.copy.copy
http://www.cnblogs.com/Eva-J/p/5534037.html