zoukankan      html  css  js  c++  java
  • 数据类型补充

    一、int , str , tuple 补充

     1 #str
     2 s = ' ' #只能是以至少一个空格组成的字符串(全空格)
     3 print(s.isspace)
     4 #tuple 
     5 #当元组只有一个元素组成并且没有','
     6 #则改元素是什么数据类型,整体就是什么数据类型
     7 tu = (1)
     8 tu1 = (1,)
     9 tu2 = ([222,333],)
    10 print(tu,type(tu)) #int型
    11 print(tu1,type(tu1)) #tuple型
    12 print(tu2,type(tu2)) #tuple 型

    二、list,dict 补充

     1 #在循环一个列表时,如果要是删除某些或者某类元素,容易出错.
     2 l1 = [111,222,333,444,555] #将索引为奇数位的元素删除
     3 #方法一
     4 l2 = []
     5 for i in range(len(l1)):
     6     if i % 2 == 0:
     7         l2.append(l1[i])
     8 print(l2)         
     9 #方法二
    10 del l1[1::2]
    11 print(l1)
    12 #方法三
    13 for i in range(len(l1)-1,0 ,-1):
    14     if i % 2 == 1:
    15         del l1[i]
    16 print(l1)
    17 
    18 #fromkeys()
    19 dic = dict.fromkeys('abc','alex')
    20 print(dic) 
    21 #{'a': 'alex', 'b': 'alex', 'c': 'alex'}
    22 #在循环一个字典时,如果删除某些键值对,可能会报错.
    23 dic = {'k1':'alex','k2':'太白','k3':'日天','name':'wusir'}
    24 l1 = []
    25 for i in dic:
    26     if 'k' in i:
    27         l1.append(i)
    28 print(l1)
    29 for k in l1:
    30     del dic[k]
    31 print(dic)
    32 
    33 #数据类型之间的转化:
    34 #int <---> str
    35 #int <---> bool
    36 #str <--->.bool
    37 #    split
    38 #str <------> list
    39 #     join
    40 #tuple <---> list
    41 l1 = [1,2,3]
    42 tu = tuple(l1)
    43 l2 = list(tu)
    44 print(tu,l2)
    45 
    46 #dict专属类型:与list转换
    47 dic = {'k1':'alex','k2':'太白','k3':'日天','name':'wusir'}
    48 print(list(dic.keys()))
    49 print(list(dic.values()))
    50 print(list(dic.items()))

    三、深浅copy

     1 l1 = [1,2,3,4]
     2 l2 = l1
     3 l1.append(5)
     4 print(l1,l2)
     5 #对于赋值运算,就是共同指向一个内存地址
     6 #浅copy
     7 l1 = [1,[22,33],2,3]
     8 l2 = l1.copy()
     9 l1.append(666)
    10 print(l1,id(l1))
    11 print(l2,id(l2))
    12 #对于浅copy来说,第一层都是独立的内存地址,从第二层开始,
    13 #都是指向同一个内存地址,一变都变
    14 l1 = [1,[22,33,],2,3]
    15 l2 = l1.copy()
    16 l1[1].append(666)
    17 print(l1,id(l1),id(l1[1]))
    18 print(l2,id(l2),id(l2[1]))
    19 #深copy
    20 l1 = [1,[22,33,],2,3]
    21 l2 = copy.deepcopy(l1)
    22 l1.append(777)
    23 l1[1].append(666)
    24 print(l1,id(l1),id(l1[1]))
    25 print(l2,id(l2),id(l2[1]))
    26 #对于深copy,无论多少层,在内存中都是两个独立的内存地址

     四、集合

    集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的。以下是集合最重要的两点:

      去重,把一个列表变成集合,就自动去重了。

      关系测试,测试两组数据之前的交集、差集、并集等关系。

    1.集合的创建

    1 set1 = set({1,2,'barry'})
    2 set2 = {1,2,'barry'}
    3 print(set1,set2)  # {1, 2, 'barry'} {1, 2, 'barry'}

    2.集合的增

     1 set1 = {'alex','wusir','ritian','egon','barry'}
     2 set1.add('景女神')
     3 print(set1)
     4 
     5 #update:迭代着增加
     6 set1.update('A')
     7 print(set1)
     8 set1.update('老师')
     9 print(set1)
    10 set1.update([1,2,3])
    11 print(set1)

    3.集合的删

    set1 = {'alex','wusir','ritian','egon','barry'}
    
    set1.remove('alex')  # 删除一个元素
    print(set1)
    
    set1.pop()  # 随机删除一个元素
    print(set1)
    
    set1.clear()  # 清空集合
    print(set1)
    
    del set1  # 删除集合
    print(set1)

    4.集合的其他操作

      4.1 交集(& )

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

      4.2 并集(|)

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

      4.3 差集(-)

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

      4.4 反交集(^)

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

      4.5 子集与超集

    set1 = {1,2,3}
    set2 = {1,2,3,4,5,6}
    
    print(set1 < set2)
    print(set1.issubset(set2))  # 这两个相同,都是说明set1是set2子集。
    
    print(set2 > set1)
    print(set2.issuperset(set1))  # 这两个相同,都是说明set2是set1超集。

      4.6 forzenset 不可变集合,让集合变成不可变类型

    s = frozenset('barry')
    print(s,type(s))  # frozenset({'a', 'y', 'b', 'r'}) <class 'frozenset'>
  • 相关阅读:
    mysql 查询结果中增加序号
    mycat配置文件备份
    解决Python安装模块出错 ImportError: No module named setuptools
    sed 详解【转】
    CentOS下配置SFTP操作日志
    解决redis aof文件过大的问题
    mysql主从复制搭建中几种log和pos详解
    Linux下使用命令行配置IPMI
    Zabbix笔记
    zabbix_agentd.conf配置文件详解
  • 原文地址:https://www.cnblogs.com/xiaobin12126/p/8378057.html
Copyright © 2011-2022 走看看