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   

posted @ 2018-07-11 09:26  Chamster  阅读(236)  评论(0编辑  收藏  举报