列表、字典、元祖、集合

中心主题

列表

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

队列:先进先出

>>> 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}

 

 

posted @ 2019-07-04 19:57  不在一城  阅读(114)  评论(0编辑  收藏  举报