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

    一、集合

        集合是无序的,不可重复的数据集合。集合里面的元素是不可哈希的(不可变类型)(元素、字符串、数字),但是集合本身不可哈希(所以集合做不了字典的键)。

        主要功能:

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

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

        创建集合     

          set = {'a','b','c'}
          set = set({'a','b','c'})
          print(set)

        1.去重  

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

          print(set)

        2.增  

          set.add('asd')    #增加
          set.update('asd')   #迭代加,一个一个加

        3.删除

          set.remove('alex')  #按元素删

          set.pop()      #随机删除

          set.clear()       #清空,返回值为 set()

          del set       #删除字集

        4.查

          print(set)

        5.其他操作

         set1 = {1,2,3,4,5}
         set2 = {4,5,6,7,8}

          1)交集(set1和set2相同元素)

            print(set1 & set2)
            print(set1.intersection(set2))

          2)并集(set1和set2所有的元素)

            print(set1 | set2)
            print(set1.union(set2))

          3)差集(set1里有set2里没有的元素)

            print(set1 - set2)
            print(set1.difference(set2))

          4)反交集(set1和set2不同的元素)

            print(set1 ^ set2)
            print(set1.symmetric_difference(set2))

          5)子集(set1里元素set2里是否都有)

            print(set1 < set2)
            print(set1.issubset(set2))

          6)超集(set2里是否有se1所有元素)

            print(set2 > set1)
            print(set2.issuperset(set1))

          7)不可变合集(frozenset)      

            set1 = {4,5}
            set2 = frozenset(set1)
            print(set2,type(set2))

            结果:frozenset({4, 5}) <class 'frozenset'>

    二、深入copy

        1.赋值运算     

          l1 = [1,2,3,['alex','barry']]
          l2 = l1

          l1[0] = 111
          print(l1 is l2)

        l1和l2指向的都是同一个内存地址,所以更改l1,l2也会更改。

        2.浅copy

        l1 = [1,2,3,['alex','barry']]
        l2 = l1.copy()

        l1.append('as')
        print(l1 is l2)    #结尾为False,l1加上内容后,l1不等于l2

          

        l1 = [1,2,3,['alex','barry']]
        l2 = l1.copy()

        l1[3].append('sa')
        print(l1[3] is l2[3])    结果为True,l1里的列表变换l2里的列表也跟着变换。

        结论:浅copy第一层是不一样的内存地址,但是第二层或更深层还是用的同一个内存地址。

        3.深copy

        为了解决浅copy问题,使用copy模块。

        import copy
        l1 = [1,2,3,['alex','barry']]
        l2 = copy.deepcopy(l1)

        l1[3].append('sa')
        print(l1 is l2)

        这样l1和l2的内存地址就完全就不一样了

    三、枚举

        可在列打印列表时加上对应的数字,类似1.alex 2.银角 3.女神 4.egon 5.太白

        li = ['alex','银角','女神','egon','太白']    
        for index,name in enumerate(li,1):
        print(index,name)

     四、列表

        列表中最好不要删除元素,删除后索引会发生更改。

        lis = [1,2,3,4,5]  #要求:用循环删除2,4    不能正着删除,删除后索引会改变,可以倒着删除,或者用新列表替换。

         方法一:  

          for i in range(len(lis)-1,-1,-1):    #range(len(lis))  0,4    第一个-1 从4开始,第二个-1 到-1结束,第三个-1  倒着输出
          if i % 2 != 0:
          del lis[i]
          print(lis)

         方法二:

          l = []
          for i in lis:
          if lis.index(i) % 2 ==0:
          l.append(i)
          lis = l
          print(lis)

    五、字典

        添加:

          dic = dict.fromkeys([1,2,3],'春哥')  
          print(dic)              #结果:{1: '春哥', 2: '春哥', 3: '春哥'}

          dic = dict.fromkeys([1,2,3],[])
          print(dic) # {1: [], 2: [], 3: []}
          dic[1].append('AS')
          print(dic)              #这几个字典共用一个内存地址,修改一个都更改。

        删除:

          dic = {'k1':'v1','k2':'v2','a3':'v3'}  #删除键里包含k的键值对

          方法一:
            s = {}
            for i in dic:
            if 'k' not in i:
            s = {i,dic[i]}
            print(s)

          方法二: 

            l = []
            for i in dic:
            if 'k' in i:
            l.append(i)
            for i in l:
            del dic[i]
            print(dic)

    六、元祖

        如果元祖里面只有一个元素且不加,那此元素是什么类型,就是什么类型。

        tu1 = (1)
        tu2 = (1,)
        print(tu1,type(tu1),tu2,type(tu2))  #结果:1 <class 'int'> (1,) <class 'tuple'>

  • 相关阅读:
    CPU die
    删除binlog的方法
    mysql中bigint、int、mediumint、smallint 和 tinyint的取值范围
    Javascript中的Keycode值列表
    php5.2转向 PHP 5.3 的 PHP 开发
    linux 下查看系统内存使用情况的方法
    Kyoto Cabinet(DBM) + Kyoto Tycoon(网络层)
    window 7 下一台cp 两个mysql 配置主从
    php 序列化(serialize)格式详解
    Linux下ntpdate时间同步
  • 原文地址:https://www.cnblogs.com/tsboy/p/8086524.html
Copyright © 2011-2022 走看看