• 自学Python编程的第八天----------来自苦逼的转行人


    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字典的增删改查中的增的作用,把问题复杂化了,还不会充分利用连贯所学的知识点
    解决方法:需要把所学的知识点在过一遍,然后总结看哪些知识点是可以连贯在一起使用

  • 相关阅读:
    【转载】多个集合合并成没有交集的集合-实现
    [遇见时光]美团测试实习生面试
    [遇见时光]中科院分词工具NLPIR,Not valid license or your license expired!
    html a标签的target属性
    使用EditPlus技巧,提高工作效率(自动文成文件、语法文件下载)
    android textView 替文字添加下划线 删除线
    Android把自己应用加入到系统文件分享中
    addFooterView 方法注意调用顺序
    android打开当前应用市场简单方法 (ActivityNotFoundException 异常解决)
    The currently displayed page contains invalid values异常
  • 原文地址:https://www.cnblogs.com/hpcz190911/p/11545429.html
Copyright © 2020-2023  润新知