zoukankan      html  css  js  c++  java
  • Python之list、tuple、dict、set

    参考原文

      廖雪峰Python

    PS:来看看Python中比较特殊的几种数据类型list、tuple、dict、set

    list

      list(列表)是Python内置的一种数据类型,它是一种有序、可变的集合,可以随时添加和删除其中的元素。

    >>> classmates = ['Li', 'Tom', 'Alice']
    >>> classmates
    ['Li', 'Tom', 'Alice']

    变量classmates就是一个list。关于list的操作如下:

     方法

    • len():获取list元素的个数
      >>> len(classmates)
       3
      View Code
    • 通过索引访问
      >>> classmates[0]
      'Li'
      >>> classmates[-1]
      'Alice'
      >>> classmates[3]
      Traceback (most recent call last):
        File "<pyshell#11>", line 1, in <module>
          classmates[3]
      IndexError: list index out of range
      View Code
    • append:向list末尾追加元素
      >>> classmates.append('Adam')
      >>> classmates
      ['Li', 'Tom', 'Alice', 'Adam']
      View Code
    • insert:把元素插入到指定的索引
      >>> classmates.insert(1,'Jack')
      >>> classmates
      ['Li', 'Jack', 'Tom', 'Alice', 'Adam']
      View Code
    • pop():删除末尾的元素
      >>> classmates.pop()
      'Adam
      View Code
    • pop(i):删除指定索引的元素
      >>> classmates.pop(1)
      'Jack'
      >>> classmates
      ['Li', 'Tom', 'Alice']
      View Code

    tuple

      tuple是一种有序、不变的集合,也叫元组,一旦初始化就不能修改。与list相比,就没有append()、insert()这样的方法。

     为什么有了list还要tuple?

      因为tuple是不变的,所以代码更安全,所以如果能用tuple代替list就尽量用tuple吧。

     Notes

    1. 不变指的是tuple的每个元素,指向永远不变,指向一个list,就不能改成指向其他对象,但指向的list本身是可以改变的。
      >>> t = ('a', 'b', ['A', 'B'])
      >>> t[2][0] = 'X'
      >>> t[2][1] = 'Y'
      >>> t
      ('a', 'b', ['X', 'Y'])
      View Code
    2. 特殊的tuple元组
      #空tuple ()
      >>> t = ()
      >>> t
      ()
      
      #一个元素的tuple,必须加','来消除歧义(小括号就可以表示typle又可以表示数学中的小括号)
      >>> t = (1,)
      >>> t
      (1,)
      View Code

    dict

      dict全称dictionary,使用键-值(key-value)存储,具有极快的查找速度。用Python写一个dict如下:

    >>> d ={'Michael': 95, 'Bob': 75, 'Tracy': 85}
    >>> d['Michael']
    95
    Tips:dict内部存放的顺序和key放入的顺序是没有关系的。

     对比于list

      dict的特点:1.查找和插入的速度极快,不会随着key的增加而变慢 2.需要占用大量的内存,内存浪费多。

      而list恰恰相反:1.查找和插入的时间随着元素的增加而变慢 2.占用空间小,浪费内存少。

     小结

      所以,dict是用空间来换取时间的一种方法。dict可以用在需要高速查找的地方,在Python代码中几乎无处不在,正确使用dict就变得十分重要,需要牢记的第一条就是dict的key必须是不可变的对象。dict根据key来计算value的存储位置(哈希算法),在Python中,字符串、整数等是不可以变的,而list是可变的,就不能作为key。

    set

      set和dict类似,也是一组key的集合,但不存储value,set可以看成数学意义上的无序和无重复元素的集合。要创建一个set,需要提供一个list作为输入集合:

    >>> s = set([1,2,3])
    >>> s
    {1, 2, 3}

      两个set可以做数学意义上的交集、并集等操作:

    >>> s1 = set([1,2,3])
    >>> s2 = set([2,3,4])
    >>> s1 & s2
    {2, 3}
    >>> s1 | s2
    {1, 2, 3, 4}
    View Code
  • 相关阅读:
    HDU 5213 分块 容斥
    HDU 2298 三分
    HDU 5144 三分
    HDU 5145 分块 莫队
    HDU 3938 并查集
    HDU 3926 并查集 图同构简单判断 STL
    POJ 2431 优先队列
    HDU 1811 拓扑排序 并查集
    HDU 2685 GCD推导
    HDU 4496 并查集 逆向思维
  • 原文地址:https://www.cnblogs.com/yunche/p/8856979.html
Copyright © 2011-2022 走看看