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字典的增删改查中的增的作用,把问题复杂化了,还不会充分利用连贯所学的知识点 解决方法:需要把所学的知识点在过一遍,然后总结看哪些知识点是可以连贯在一起使用
查看更多关于自学Python编程的第八天----------来自苦逼的转行人的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did171636