• Day7


    1、数据类型补充

    #str

    s='alex'

    s1=' '

    ret=s1.isspace()

    print(ret)   #返回True

    #tuple

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

    tu=(1)

    tu1=(1,)

    print(tu,type(tu))  #返回int

    print(tu1,type(tu1))  #返回tuple

    tu=('老男孩')

    tu1=('老男孩',)

    print(tu,type(tu))  #返回str

    print(tu1,type(tu1))  #返回tuple

    tu=([1,2,3])

    tu1=([1,2,3],)

    print(tu,type(tu))  #返回list

    print(tu1,type(tu1))  #返回tuple

    #对于list

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

    #将索引为奇数的元素删除

    li=[11,22,33,44,55]
    del li[1::2]
    print(li)
    
    li=[11,22,33,44,55]
    l1=[]
    for i in range(len(li)):
        if i%2==0:
            li.append(li[i])
    li=l1
    print(li)
    View Code
    li=[11,22,33,44,55]
    l1=[]
    for i in li:
        if li.index(i)%2==0:
            l1.append(i)
    li=l1
    print(li)
    View Code
    li=[11,22,33,44,55]
    for i in range(len(li)-1,-1,-1):
        if i%2==1:
            del li[i]
    print(li)
    View Code

    #dict

    dic=dict.fromkeys('abc','alex')

    print(dic)

    dic=dict.fromkeys([1,2,3],[])
    
    print(dic)
    
    dic[1].append('老男孩')
    
    print(dic)
    View Code

    #将字典中含有K元素的键,对应的键值对删除

    dic= {'k1':'value1','k2':'value2','k3':'value3'}
    l1=[]
    for i in dic:
        if 'k' in i:
            l1.append(i)
    for i in l1:
        del dic[i]
    print(dic)
    View Code

    #再循环字典中,不能增加或者删除此字典的键值对

    # dictionary changed size during iteration

    #数据转换

    #int str bool

    #str list split  join

    #tuple list

    tu=(1,2,3)

    li=list(tu)

    l1=[1,2,3]

    tu1=tuple(l1)

    print(tu1)

    #数据类型转化为bool 为false

    0  ''  []  () {}

    tuple >>str

    tu=('wusir','老男孩')

    s=' ',join(tu)

    print(s)

    2、集合

    集合:

      数据类型:

      不重复,无序,他里面的元素是可哈希的。它本身是不可哈希,所以不能作为字典的key

      作用:1、去重

        2、数据关系的测试

    #去重

    li= [11,11,22,22,33,33,33]
    li=list(set(li))
    print(li)
    set={11,22,33,11,22,33}
    print(set)
    View Code

    set1={'alex','wusir','ritian','barry'}

    #增

    set1.add('女神')

    set1.update('abc') #迭代添加

    set1.update([1,2,3])  #迭代添加

    print(set1)

    #删

    set1.remove('alex')

    #随机删除

    set1 = {'alex','wusir','ritian','egon','barry'}
    ret = set1.pop()
    print(ret)
    print(set1)
    View Code

    set1.clear()

    print(set1)   #返回 set()

    del set1

    print(set1)  #报错

    #查

    for i in set1: #遍历

      print(i)

    set1= {1,2,3,4,5}

    set2={4,5,6,7,8}

    #交集  & intersection

    print(set1 & set2)

    print(set1.intersection(set2))   #4,5

    #反交集  ^ symmetric_difference

    print(set1  ^ set2)   #{1,2,3,6,7,8}

    print(set1.symmertric_difference(set2))  #{1,2,3,6,7,8}

    #并集  | union

    print(set1 | set2)

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

    #差集

    print(set1 -  set2)   #{1,2,3}

    print(set2 - set1)  #{6,7,8}

    set1= {1,2,3}

    set2={1,2,3,4,5,6}

    print(set1.issubset(set2))   #set1是set2的子集

    print(set2.issuperset(set1))  #set2是set1的超集

    set1={'bayy','wusir'}

    #不可变集合

    set2=frozenset(set1)

    print(set2,type(set2))

    2、深浅Copy

    li=[1,2,3]

    l2=l1

    l2.append(111)

    print(l1,l2)

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

    #copy不是指向一个,在内存中开辟了一个内存空间

    对于浅copy来说,第一层创建的是新的内存地址,而从第二层开始,指向的都是同一个内存地址,

    所以,对于第二层以及更深的层数来说,保持一致性

    l1 = [1,2,[1,2,3,[22,33,44]],4]
    l2=l1.copy()
    l1[2].append(666)
    print(l1)
    print(l2)
    print(id(l1))
    print(id(l2))
    View Code

    #deep.copy

    对于深copy来说,两个是完全独立的

    改变任意一个任何元素(无论多少层),另一个绝对不改变

    import copy

    li=[1,2,[1,2,3],4]

    l2=copy.deepcopy(l1)

    li[2].append(666)

    print(l1,l2)

    print(id(l1))

    print(id(l2))

    #切片是浅copy

    l1=[1,2,3,[22,33]]

    l2=l1[:]

    l1[3].append(666)

    print(l2)   #[1,2,3,[22,33,666]]

    3、编码的补充

    #gbk--->utf-8

    s='alex'

    s1=s.encode('gbk')

    print(s1)

    s2=s1.decode('gbk').encode('utf-8')

    print(s2)

  • 相关阅读:
    Js 获取当前时间
    C# 将datatable 转换json
    easyui 文本框验证长度
    js 为label标签和div标签赋值
    easy ui datagrid 设置冻结列
    Ext Grid 加载超时设置timeout: 180000
    jQuery uploadify-v3.1 批量上传
    MVC5+EF6+BootStrap3.3.5 博客系统之项目搭建(一)
    C# list 筛选FindAll
    ExtJS 添加图标icon
  • 原文地址:https://www.cnblogs.com/a352735549/p/8652089.html
Copyright © 2020-2023  润新知