zoukankan      html  css  js  c++  java
  • 列表、字典、元祖、集合

    中心主题

    列表

    可以存多个值;有序;可变

    队列:先进先出

    >>> l =[]
    >>> print(l)
    []
    >>> l.append('first')
    >>> l.append('second')
    >>> l.append('third')
    >>> print(l.pop(0))
    first
    >>> print(l.pop(0))
    second
    >>> print(l.pop(0))
    third

    堆栈:先进后出

    >>> l =[]
    >>> l.append('first')
    >>> l.append('second')
    >>> l.append('third')
    >>> print(l.pop())
    third
    >>> print(l.pop())
    second
    >>> print(l.pop())
    first

    count

    • 统计元素出现的次数

      >>> l = [1,2,3,4,5,6,]
      >>> res = l.count(8)
      >>> print(res)
      0

    clear

    • 清空列表

      >>> l = [1,2,3,4,5,6,]
      >>> l.clear()
      >>> print(l)
      []

    reverse

    • 将列表反转

      >>> l = [1,2,3,]
      >>> l.reverse()
      >>> print(l)
      [3, 2, 1]

    sort

    • 排序,默认是从小到大

    • 但是可以通过指定参数来修改默认的排序规则

      >>> l.sort()
      >>> print(l)
      [1, 2, 3]
      >>> l = [1,3,2,6,]
      >>> l.sort(reverse=True)
      >>> print(l)
      [6, 3, 2, 1]

    元组

    作用:小括号内存储多个元素,元素之间逗号隔开,

       元素可以是任意类型,元组不能被修改

    取值

    • 方式:按索引取值(正向或反向);只能取值,无法更改

      >>> '不能更改'
      '不能更改'
      >>> t = (1,2,'a',[5,6])
      >>> print(t[3])
      [5, 6]
      >>> print(t[0:3])
      (1, 2, 'a')
      >>> print(t[-1])
      [5, 6]
      >>> t[0]= '2'
      Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
      TypeError: 'tuple' object does not support item assignment

    循环取值

    >>> t = ('i can fly.',56,7.8,{9,10})
    >>> for j in t:
    ...     print(j,end=' ')
    ...
    i can fly. 56 7.8 {9, 10} >>>
    >>>

    删除:不支持删除元素

    >>> t = (1,2,'a',[5,6])
    >>> del(t[0])
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: 'tuple' object doesn't support item deletion

    切片

    >>> t = (1,2,'m',(1,2))
    >>> print(t[::2])
    (1, 'm')
    >>>

    长度len()

    >>> t = ([5,6],'k',7)
    >>> print(len(t))
    3
    >>>

    成员运算

    >>> t = ('i am fine.',{5,6},{'name':'zhang','ped':'456'})
    >>> print({5,6} in t)
    True

    不支持添加元素

    >>> t.append(11)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    AttributeError: 'tuple' object has no attribute 'append'
    >>>

    字典

    作用:大括号内存储多组key:value键值对,key通常情况下都是字符串,其实只要是不可变类型即可,value可以是任意数据类型

    注意:字典的key不能重复,若重复,则按照最后写入的一组为准,其他的键值对失效 不写入字典

    三种定义方式

    • key:value键值对

      >>> d = {'age':18,'hobbies':'music,play'}
      >>> print(d['age'])
      18
    • dict方式赋值

      >>> d = dict(age=24,weight=123)
      >>> print(type(d),d)
      <class 'dict'> {'age': 24, 'weight': 123}
      >>>
    • 直接改变列表数据类型

      • 这种方法要求源列表的格式

    字典的使用

    • 取值

      • 按key取值,通过索引直接 可存可取可改

        >>> d = {'age':18,'hobbies':'music,play'}
        >>> print(d['age'])
        18
        >>> d['name':'zhang']
        Traceback (most recent call last):
          File "<stdin>", line 1, in <module>
        TypeError: unhashable type: 'slice'
        >>> d['name']='zhang'
        >>> print(d)
        {'age': 18, 'hobbies': 'music,play', 'name': 'zhang'}
        >>> d['name']='wang'
        >>> print(d)
        {'age': 18, 'hobbies': 'music,play', 'name': 'wang'}
      • 按keys(),values(),items()取值

        >>> d1 = {'name':'jason','password':123}
        >>> print(d1.keys(),d1.values(),d1.items())
        dict_keys(['name', 'password']) dict_values(['jason', 123]) dict_items([('name', 'jason'), ('password', 123)])
        >>> d1 = {'name':'jason','password':123}
        >>> print(d1.keys())
        dict_keys(['name', 'password'])
        >>> print(d1.values())
        dict_values(['jason', 123])
        >>> print(d1.items())
        dict_items([('name', 'jason'), ('password', 123)])
        >>>
      • 循环取值

        >>> d1 = {'age':24,'gender':'male'}
        >>> for k in d1:
        ...     print(k)
        ...
        age
        gender
        >>>
      • get()

        • 作用:根据key获取value;dict.get('key','参数')

        • 注意

          • ① 若存在就取出对应value,不管有没有写第二个参数

          • ② 不存在返回第二个参数

          • ③ 如没有写第二个参数则返回None

            >>> d1 = {'age':24,'weight':123}
            >>> print(d1.get('age','若存在就取出对应value'))
            24
            >>> print(d1.get('name','不存在返回None'))
            不存在返回None
            >>> print(d1.get('name'))
            None
            >>> print(d1.get('name','不存在返回第二个参数,如没有第二个参数则返回None'))
            不存在返回第二个参数,如没有第二个参数则返回None
            >>> print(d1.get('age','若存在就取出对应value'))
            24
      • setdefault();格式:dict.setdefault('key','value')

        • 当键存在的情况下 不修改值 并且将原先key对应值返回给你

        • 当键不存在的情况下 新增一个键值对 并且将新增的键值对的值返回给你

          >>> d1 = {'age':24,'gender':'male'}
          >>> d1.setdefault('age')
          24
          >>> d1.setdefault('age',18)
          24
          >>> d1.setdefault('name','zhang')
          'zhang'
          >>>
    • 存值

      • update()   格式:dict1.update(dict2)

        • 把一个字典重中的键值对取出,或者一个新的键值对关系,依次添加到另一个字典中

          >>> d1 = {'age':24,'gender':'male'}
          >>> d2 = {'name':'zhang'}
          >>> d1.update(d2)
          >>> print(d1)
          {'age': 24, 'gender': 'male', 'name': 'zhang'}
          >>> print(d2)
          {'name': 'zhang'}
          >>> d1.update('age'=18)
            File "<stdin>", line 1
          SyntaxError: keyword can't be an expression
          >>> d1.update(age=18)
          >>> print(d1)
          {'age': 18, 'gender': 'male', 'name': 'zhang'}
          >>> d1.update(age=18,gender=female)
          Traceback (most recent call last):
            File "<stdin>", line 1, in <module>
          NameError: name 'female' is not defined
          >>> d1.update(age=18,gender='female')
      • dict.setdefault(‘name’,'jason'):当键不存在的情况下 新增一个键值对 并且将新增的键值对的值返回给你

        >>> d1 = {'age':24,'gender':'male'}
        >>> d1.setdefault('age')
        24
        >>> d1.setdefault('age',18)
        24
        >>> d1.setdefault('name','zhang')
        'zhang'
      • d1['name','jason']:不存在的话就会新增

        >>> d1['age']=100
        >>> print(d1)
        {'age': 100, 'gender': 'female', 'name': 'zhang'}
        >>>
    • 删除

      • del()  格式:del dict['key']

        >>> del d['hobbies']
        >>> d = {'age':18,'hobbies':'music,play'}
        >>> del d['hobbies']
        >>> print(d)
        {'age': 18}
      • clear()清空字典  格式:dict.clear()

        >>> d = {'age':18,'hobbies':'music,play'}
        >>> d.clear()
        >>> print(d)
        {}
      • pop()按索引弹出

        >>> d = {'age':18,'hobbies':'music,play'}
        >>> d.pop('age')
        18
        >>> print(d)
        {'hobbies': 'music,play'}
        >>>
      • popitem()

        • 最后一组键值对以元组的形式弹出键值对

          >>> d1 = {'age':24,'gender':'male'}
          >>> res = d1.popitem()
          >>> print(res)
          ('gender', 'male')
          >>>
    • 长度len():统计键值对的个数

      >>> d = {'age':18,'hobbies':'music,play'}
      >>> print(len(d))
      2
    • 成员运算 in:字典只能判断key值,value是不对用户显示的

      >>> d = {'age':18,'hobbies':'music,play'}
      >>> print(18 in d)
      False

    集合

    作用:去重,关系运算

    定义:花括号中逗号隔开,每个元素必须是不可变类型,否则报错

    特点:可变,无序,自动去重

    运算:(| 合集)(&交集)(-差集)(^对称差集)(==元素相同)(>,>=父集)(<,<=子集)

    pythons = {'jason', 'nick', 'tank', 'egon', 'kevin', 'owen', 'alex'}
    linux = {'frank', 'jerry', 'tank', 'egon', 'alex'}
    # 既报名python也报名linux的学生姓名
    print(pythons & linux)  # 交集
    
    # 只报名python的学生姓名
    print(pythons - linux)
    
    # 只报名linux的学生姓名
    print(linux - pythons)
    
    # 没有同时报名两门课程的学生姓名
    print(pythons ^ linux)  # 对称差集
    
    # 取出所有报了名的学生姓名
    print(pythons | linux)

    添加元素:set.add(元素)

    >>> s = {1,2,3,4}
    >>> s.add(666)
    >>> print(s)
    {1, 2, 3, 4, 666}
    >>> print(s.add((11,22,33)))
    None
    >>> print(s)
    {1, 2, 3, 4, (11, 22, 33), 666}
    >>>

    删除元素

    >>> s = {1,2,2,3,4,}
    >>> s.remove(1)
    >>> s
    {2, 3, 4}
    

     

  • 相关阅读:
    批处理系列(10)
    批处理系列(11)
    批处理系列(9)
    批处理系列(7)
    批处理系列(8)
    批处理系列(6)
    批处理系列(4)
    批处理系列(5)
    Java项目性能监控和调优工具-Javamelody的学习总结
    easyUI 接收Spring Mvc中@ResponseBody中文乱码解决
  • 原文地址:https://www.cnblogs.com/buzaiyicheng/p/11134587.html
Copyright © 2011-2022 走看看