2019-09-18-21:11:24(初学者不会学博客,望大家见谅见谅)
今天学的内容是有关list.、dict、set集合的使用方法和注意事项
list和dict在循环中不可删,而且list在迭代输出时进行删除是会导致索引跟着改变
所以一般list不在循环过程中进行删除
list和dict要进行删除时,应该把要删除的记录到另一个列表中,然后在进行删除
深浅拷贝:
浅拷贝只拷贝第一层的内容,而深拷贝是全部内容都进行了拷贝
下面是总结的内容:
一.重要知识点
1. str. join() 把列表变成字符串
2. 列表不能在循环的时候删除.因为索引会跟着改变
注意:由于删除元素会导致元素的索引改变, 所以容易出现问题. 尽量不要在循环中直接去删除元素.
可以把要删除的元素添加到另⼀个集合中然后再批量量删除.
3. 字典也不能直接循环删除.(dict中的元素在迭代过程中是不允许进⾏删除的)
把要删除的内容记录在列表中. 循环列表. 删除原列表, 字典中的数据
4. fromkeys() 不会对原来的字典产生影响. 产生新字典(神坑, 考试)
5. set集合. 不重复, 无序.
注意: set集合中的元素必须是可hash的, 但是set本身是不可hash的. set是可变的
set去重操作比较常用
6. 想转换成什么.就用什么括起来
7. 深浅拷贝(拷贝要比创建对象过程要快得多)
1. 直接赋值. 两个变量指向同一个对象.
对于list, set, dict来说, 直接赋值. 其实是把内存地址交给变量.并不是复制⼀份内容.
所以. lst1的内存指向和lst2是⼀样的. lst1改变了, lst2也发⽣了改变
2. 浅拷贝:只拷贝第一层内容. 第二层内容不会被拷贝copy()
3. 深度拷贝: 对象中的所有内容都会被拷贝一份
import copy
copy.deepcopy()
二.错误总结
1.把问题复杂化
lst= ['jinpingmei','解救吾先生','美国往事','西西里的美丽传说']
dic={}
for el in lst:
content=input('请给%s电源评分:' % el)
if dic.get(el)==None: '''
dic[el]=content 这里可以更加简单写
else: 改正的方法在下一个
dic[el].append(content) '''
print(dic)
for el in lst:
content=input('请给"%s"电影评分:' % el)
dic[el]=content
print(dic)
#错先这个错误的原因是因为没有想到dic字典的增删改查中的增的作用,把问题复杂化了,还不会充分利用连贯所学的知识点
解决方法:需要把所学的知识点在过一遍,然后总结看哪些知识点是可以连贯在一起使用