• python 一些小知识


    小知识总结

    list

    在循环一个列表时,最好不要删除列表中的元素,这样会使索引发生改变,从而报错

    dict

    dict.fromkeys()                              前面是一个可迭代对象,把后面的值配给它们,现成键值对,这些键的值指向同一地址

    dic = (dict.fromkeys('1,2,3','AAA'))
    print(dic)

    {',': 'AAA', '3': 'AAA', '1': 'AAA', '2': 'AAA'}

    因为这些键的值指向同一地址,所以当其中一个键的值变了,其它键的值也会跟着改变

    在循环一个字典中,不能删除他的键值对

    bool

    0 str 列表 字典 set()   这些只要是空的,转化后都是False

    非空的就是True

    元组

    如果元组里只有一个元素且不加逗号,那么此元素原来是什么类型,输出就是什么类型

    tu1 = (1)
    tu2 = (2,)
    print(tu1)
    print(tu2)

    集合

    集合是可变数据类型,但是它里面的元素必须是不可变的数据类型,无序,不重复.

    add                                                                增加

    set1.add('元素')
    print(set1)

    {'barry', 'alex', 'wusir', '元素', 'egon', 'ritian'}

    update                                                            迭代加入

    set1.update('元素')
    print(set1)

    {'barry', 'alex', '素', '元', 'wusir', 'egon', 'ritian'}

    pop                                                                 随机删除,能返回被删除元素

    print(set1.pop())
    print(set1)

    alex
    {'barry', 'egon', 'ritian', 'wusir'}

    remove                                                           按元素删除,没有该元素会报错

    set1.remove('alex')
    print(set1)

    clear                                                               清空列表

    set1.clear()
    print(set1)

    set()

    del                                                                  删除列表

    del set1
    print(set1)

    for in

    for i in set1:
        print(i)

    alex
    wusir
    barry
    egon
    ritian

    求交集

    &      intersection

    set1 = {1,2,3,4,5}
    set2 = {4,5,6,7,8}
    print(set1 & set2) set1 = {1,2,3,4,5} set2 = {4,5,6,7,8} print(set1 | set2) 

    {4, 5}

    求并集

    |         union

    set1 = {1,2,3,4,5}
    set2 = {4,5,6,7,8}
    print(set1 | set2)

    {1, 2, 3, 4, 5, 6, 7, 8}

    差集

    -               difference

    set1 = {1,2,3,4,5}
    set2 = {4,5,6,7,8}
    print(set1 - set2)

    {1, 2, 3}

    反交集

    ^        symmetric_difference

    set1 = {1,2,3,4,5}
    set2 = {4,5,6,7,8}
    print(set1 ^ set2)

    {1, 2, 3, 6, 7, 8}

    子集与超集

    set1 = {1,2,3}
    set2 = {1,2,3,4,5,6}
    print(set1 < set2)                   #set1是set2的子集
    print(set1 > set2)                   #set1是set2的超集

    True
    False

    列表去重

    li =[1,2,2,3,3,4,4,5,5,6,6,7,8,8,9]
    set1 = set(li)
    li = list(set1)
    print(li)

    [1, 2, 3, 4, 5, 6, 7, 8, 9]

    列表转集合 再转回列表, 这样做效率最高

    set是可变数据类型,

    set1 = frozenset('barry')

    这样可以把set转换成不可变数据类型

    copy 拷贝

    浅拷贝

    l1 = [1,2,3]
    l2 = l1.copy()
    print(l1)
    print(l2)

    [1, 2, 3]
    [1, 2, 3]

    l1 = [1,2,3]
    l2 = l1.copy()
    l1.append(4)
    print(l1)
    print(l2)

    [1, 2, 3, 4]
    [1, 2, 3]

    l1 = [1,2,3,[1,2,3],4]
    l2 = l1.copy()
    l1[3].append(9)
    print(l1)
    print(l2)

    [1, 2, 3, [1, 2, 3, 9], 4]
    [1, 2, 3, [1, 2, 3, 9], 4]

    拷贝是在内存中建立一个新的列表,内存地址不是同一个

    但是 如果列表中有嵌套的列表或字典,它们的内存地址是同一个

    深拷贝

    import copy
    l1 = [1,2,3,[1,2,3],4]
    l2 = copy.deepcopy(l1)
    
    print(l1)
    print(l2)

    [1, 2, 3, [1, 2, 3], 4]
    [1, 2, 3, [1, 2, 3], 4]

    import copy
    l1 = [1,2,3,[1,2,3],4]
    l2 = copy.deepcopy(l1)
    l1[3].append(9)
    print(l1)
    print(l2)

    [1, 2, 3, [1, 2, 3, 9], 4]
    [1, 2, 3, [1, 2, 3], 4]

    深拷贝是拷贝一个新的,独立的列表,两者完全独立

    列表的赋值

    l1 = [1,[1],2,3,4]
    l2 = l1[:]

    列表的赋值其实就是浅拷贝,所以它遵从浅拷贝一样的标准

    enumerate

    enumerate()   自动将元素的索引打印成元组

    li = ['alex','taibai','wusir','egon']
    for index,i in enumerate(li,1):
        print(index,i)
    li = ['alex','taibai','wusir','egon']
    for i in li:
        print(li.index(i),i)

    enumerate(li,1) 可以自定义输出的索引的开始值

  • 相关阅读:
    linux下程序运行时间的获取方法,
    网络通信过程(转&自己完善)
    关于找工作&毕设
    linux进程间通信(IPC)几种方式
    asp.net2.0新特性概述 之二
    vs2005新特性
    C#高级特性
    Asp.net2.0新特性 之三
    当前流行的网站设计风格(转贴)
    ASP.NET 2.0 新特性 之一
  • 原文地址:https://www.cnblogs.com/GrandDarkness/p/8086593.html
Copyright © 2020-2023  润新知