• python's seventh day for me set


    数据类型的补充:

        对于元祖:  如果只有一个元素,并且没有逗号,此元素是什么数据类型,该表达式就是什么数据类型。

    tu = ('顾清秋')
    tul = ('顾清秋',)
    print(type(tu))
    print(type(tul))
    
    # <class 'str'>
    # <class 'tuple'>

        对于列表: 在循环一个列表时,最好不要进行删除的动作(一旦删除索引会随之改变),容易出错。

    li = [1,2,3,4,5]   #删除索引为奇数的元素
    del li[1::2]       #切片删除
    print(li)
    
    # [1, 3, 5]
    
    
    
    li = [1,2,3,4,5]   #删除索引为奇数的元素
    for i in range (len(li)-1,-1,-1):   #反向打印索引。
        # print(i)                 
        if i % 2 ==1:        #检测索引是否为奇数
            del li[i]       #从后往前删除元素,不会影响前面的索引位置。
    print(li)
    
    # [1, 3, 5]
    
    
    
    li = [1,2,3,4,5]   #删除索引为奇数的元素
    li2 = []   #定义一个空列表,用来存放索引为偶数的元素
    for i in range(len(li)):
        # print(i)
        if i % 2 == 0:
            li2.append(li[i])   #将索引为偶数的元素加入到li2中
    li = li2           # 将列表li2中的索引为偶数的元素赋值给li
    print(li)
    
    # [1, 3, 5]

        对于字典: 在循环字典中,不能增加或者删除此字典的键值对。否则会报错(dictionary changed size during iteration)

    #   将字典中含有k元素的键以及其对应的键值对删除。
    dic = {'k1':'顾清秋','k2':'懒笨呆','name':'alex'}
    li = []            #用来存放dic中含k元素的键。
    for i in dic.keys():
        # print(i)
        if 'k' in i:   #判断是否存在
            li.append(i)
    for i in li:
        del dic[i]    #删除dic中含k键的键值对。
    print(dic)
    

    # {'name': 'alex'}

    fromkeys()

    dic = dict.fromkeys('abc','alex')
    print(dic)
    
    # {'c': 'alex', 'b': 'alex', 'a': 'alex'}
    
    
    dic = dict.fromkeys([1,2,3],[])
    print(dic)
    
    # 1: [], 2: [], 3: []}
    dic[1].append('顾清秋')
    print(dic)
    
    # {1: ['顾清秋'], 2: ['顾清秋'], 3: ['顾清秋']}
    #由上面输出可以看出1,2,3所对应的[]是同一个空列表,一个改变其他的都随之改变。

    tuple 与 list  之间的相互转换。

    #将元祖转换成列表
    tu = (1,2,3)
    li = list(tu)
    print(li)
    
    # [1, 2, 3]
    
    
    #将列表转换成元祖
    li2 = [1,2,3]
    tu2 = tuple(li2)
    print(tu2)
    
    #(1, 2, 3)

    数据类型转换成 bool 为 False

        0, 空字符串, 空列表, 空字典, 空元祖。

    tulpe  ---> str  (单向)

    tu = ('顾清秋','lanbendai')
    s = ''.join(tu)
    print(s)
    
    # 顾清秋lanbendai

    集合 set

        去重:

    #去除li中重复的数字。
    li = [11,22,33,33,44,22,55]
    li = list(set(li))    #set()去除重复的数字,再转换成列表赋值给li
    print(li)
    
    # {33, 11, 44, 22, 55}

    集合的创建:

    set1 = set({1,2,'guqingqiu'})
    print(set1,type(set1))
    
    # {'guqingqiu', 1, 2} <class 'set'>

    集合的 增 :

        add  update

    set1 = {'顾清秋','懒笨呆'}
    set1.add('guqingqiu')
    print(set1)
    
    # {'顾清秋', '懒笨呆', 'guqingqiu'}
    
    
    set1.update('abc')print(set1)
    
    # {'懒笨呆', 'b', '顾清秋', 'a', 'guqingqiu', 'c'}

    集合的 删 :

        remove()  指定元素删除

    set1 = {'顾清秋','懒笨呆'}
    set1.remove('顾清秋')
    print(set1)
    
    # {'懒笨呆'}

        pop()  随机删除

    set1 = {'顾清秋','懒笨呆'}
    print(set1 .pop())   #有返回值
    print(set1)
    
    # 懒笨呆
    # {'顾清秋'}

        clear  清空集合

    set1 = {'顾清秋','懒笨呆'}
    set1.clear()
    print(set1)
    
    #set()     #空集合

        del  直接删除集合。

    集合的 查

        用 for 循环查看

    set1 = {'顾清秋','懒笨呆'}
    for i in set1:
        print(i)
    
    # 顾清秋
    # 懒笨呆

     集合的 交集 :

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

    集合的  反交集 :

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

    集合的  并

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

    集合的  差集 :

    set1 = {1,2,3,4,5}
    set2 = {4,5,6,7,8}
    print(set1 - set2)#哪个集合在前面打印的就是哪个集合多出来的
    print(set2 - set1)
    
    # {1, 2, 3}
    # {8, 6, 7}

    集合的 子集 :

    set1 = {1,2,3}
    set2 = {1,2,3,4,5,6}
    print(set1.issubset(set2))   #子集
    print(set2.issuperset(set1))  #set2 是 set1的超集
    
    # True
    # True

    集合的 冻集合 :

    frozenset()   将集合转换成不可变类型    

    set1 = {'顾清秋','懒笨呆'}
    set2 = frozenset(set1)
    print(set2,type(set2))
    
    # frozenset({'顾清秋', '懒笨呆'}) <class 'frozenset'>

    对于赋值运算,指向的是同一个内存地址。字典,列表,集合都一样。

    l1 = [1,2,3]
    l2 = l1
    l2.append(111)
    print(l1,l2)
    
    # [1, 2, 3, 111] [1, 2, 3, 111]

    浅 copy() 第一层创建的是新的内存地址,但是第二层开始,指向的都是同一个内存地址,所以对于第二层以及更深的层数来说,将会保持一致性。


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

    deep.copy()

        对于深 copy来说,两个是完全独立的,改变任意一个任何元素(无论多少层),另一个绝对不改变。

    import copy    #调用copy库
    l1 = [1,2,[1,2,3],4]
    l2 = copy.deepcopy(l1)
    l1[2].append(666)
    print(l1,l2)
    print(id(l1[2]),id(l2[2]))
    
    # [1, 2, [1, 2, 3, 666], 4] [1, 2, [1, 2, 3], 4]
    # 1803667445192 1803667444808

    切片赋值  一个改变另一个随之改变  第一层的id 内存位置不同,但子层id一致。类似于浅copy().

    l1 = [1,2,3,[22,33]]
    l2 = l1[:]
    l1[3].append(666)
    print(l1)
    print(l2)
    
    # [1, 2, 3, [22, 33, 666]]
    # [1, 2, 3, [22, 33, 666]]

    ==================================

    s = 'guqingqiu'
    s1 = s.encode('utf-8')   #unicode ---> utf-8 编码
    print(s1)
    s3 = s1.decode('utf-8')  # utf-8  ---> unicode 解码
    print(s3)
    
    # b'guqingqiu'
    # guqingqiu

    utf -8 转成 gbk

    s = '老男孩'
    s1 = s.encode('gbk')     #unicode ---> gbk
    print(s1)
    s2 = s1.decode('gbk').encode('utf-8')  # gbk -->unicode-->utf-8
    print(s2)
    
    # b'xc0xcfxc4xd0xbaxa2'
    # b'xe8x80x81xe7x94xb7xe5xadxa9'
  • 相关阅读:
    bind(),live(),delegate(),on()绑定事件方式
    3 《锋利的jQuery》jQuery中的DOM操作
    表格功能
    5.2 《锋利的jQuery》jQuery对表格的操作(选项卡/换肤)
    4.1 《锋利的jQuery》jQuery中的事件
    5.1 《锋利的jQuery》jQuery对表单的操作
    4.2 《锋利的jQuery》jQuery中的动画
    2 《锋利的jQuery》jQuery选择器
    回流(reflow)与重绘(repaint)
    BOX2d绘制曲线
  • 原文地址:https://www.cnblogs.com/stfei/p/8652494.html
Copyright © 2020-2023  润新知