zoukankan      html  css  js  c++  java
  • Python中比较特殊的几种数据类型list、tuple、dict、set

    list

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

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

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

    方法

    len():获取list元素的个数

    >>> len(classmates)
     3
    

    通过索引访问

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

    append:向list末尾追加元素

    >>> classmates.append('Adam')
    >>> classmates
    ['Li', 'Tom', 'Alice', 'Adam']
    

    insert:把元素插入到指定的索引

    >>> classmates.insert(1,'Jack')
    >>> classmates
    ['Li', 'Jack', 'Tom', 'Alice', 'Adam']
    

    pop():删除末尾的元素

    >>> classmates.pop()
    'Adam
    

    pop(i):删除指定索引的元素

    >>> classmates.pop(1)
    'Jack'
    >>> classmates
    ['Li', 'Tom', 'Alice']
    

    tuple

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

    为什么有了list还要tuple?

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

    Notes

    不变指的是tuple的每个元素,指向永远不变,指向一个list,就不能改成指向其他对象,但指向的list本身是可以改变的。

    >>> t = ('a', 'b', ['A', 'B'])
    >>> t[2][0] = 'X'
    >>> t[2][1] = 'Y'
    >>> t
    ('a', 'b', ['X', 'Y'])
    

    特殊的tuple元组

    #空tuple ()
    >>> t = ()
    >>> t
    ()
    
    #一个元素的tuple,必须加','来消除歧义(小括号就可以表示typle又可以表示数学中的小括号)
    >>> t = (1,)
    >>> t
    (1,)
    

    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}
    
  • 相关阅读:
    Luogu 1080 【NOIP2012】国王游戏 (贪心,高精度)
    Luogu 1314 【NOIP2011】聪明的质检员 (二分)
    Luogu 1315 【NOIP2011】观光公交 (贪心)
    Luogu 1312 【NOIP2011】玛雅游戏 (搜索)
    Luogu 1525 【NOIP2010】关押罪犯 (贪心,并查集)
    Luogu 1514 引水入城 (搜索,动态规划)
    UVA 1394 And Then There Was One / Gym 101415A And Then There Was One / UVAlive 3882 And Then There Was One / POJ 3517 And Then There Was One / Aizu 1275 And Then There Was One (动态规划,思维题)
    Luogu 1437 [HNOI2004]敲砖块 (动态规划)
    Luogu 1941 【NOIP2014】飞扬的小鸟 (动态规划)
    HDU 1176 免费馅饼 (动态规划)
  • 原文地址:https://www.cnblogs.com/xxpythonxx/p/12215519.html
Copyright © 2011-2022 走看看