Python中四种内置数据类型(list,tuple,set,dict)的区别

List

    list是一种有序集合,能随时添加或删除其中的元素,元素类型可以不一样,也可以定义一个空list
    构造list直接用[ ]将list的所有元素括起来,用逗号分割;通常把list赋值给一个变量,通过变量来引用list
    例子:L=[12, ‘China’, 19]
    在python中list是一个有序的集合所以在读取list中的元素时必须按照严格的顺序读取,读取list的数据使用 list名[ 位置 ],list中的位置从0开始,比如上面的L第一个元素就是L[0],第二个元素就是L[1]。
    在Python中list通过内置的函数append()方法添加数据到尾部,通过inster()方法添加数据到指定位置。

>>> L = [12, 'China', 19]
>>> L.append('Jack')
>>> print L
[12, 'China', 19, 'Jack']
>>> L.insert(1, 3.14)
>>> print L
[12, 3.14, 'China', 19, 'Jack']

    通过pop()删除最后尾部元素,也可以指定一参数删除指定位置:

>>> L.pop()
'Jack'
>>> print L
[12, 3.14, 'China', 19.998]
>>> L.pop(0)
12
>>> print L
[3.14, 'China', 19.998]

    也可以使用下标替换list中的数据

Tuple

    Tuple可以看做是一个“不变的”list列表,tuple中的数据一旦保存就不可更改;构造tuple使用()将其所有元素罗列,元素之间也是使用的都好分割。

>>> t = (3.14, 'China', 'Jason')
>>> print t
(3.14, 'China', 'Jason')

    既然tuple的之不可变那么它的作用是什么呢?当你需要一个函数返回多个值时就可以使用tuple,当然tuple也是可变的;这里的不可变值指的是tuple中的元素数量和位置不可变,但当其中的元素为一个list时tuple就变成了一个“可变的”

>>> t = (3.14, 'China', 'Jason', ['A', 'B'])
>>> print t
(3.14, 'China', 'Jason', ['A', 'B'])
>>> L = t[3]
>>> L[0] = 122
>>> L[1] = 233
>>> print t
(3.14, 'China', 'Jason', [122, 233])

Dict

    dict其实就是Key-Value键值对,类似于HashMap,可以用花括号{}通过类似于定义一个C语言的结构体那样去定义它:

>>> d = {
    'Adam': 95,
    'Lisa': 85,
    'Bart': 59,
    'Paul': 75
}
>>> print d
{'Lisa': 85, 'Paul': 75, 'Adam': 95, 'Bart': 59}

    可以通过len函数计算它的长度(List,tuple也可以):

>>> len(d)
4

    可以直接通过键值对方式添加dict中的元素:

>>> print d
{'Lisa': 85, 'Paul': 75, 'Adam': 95, 'Bart': 59}
>>> d['Jone'] = 99
>>> print d
{'Lisa': 85, 'Paul': 75, 'Adam': 95, 'Jone': 99, 'Bart': 59}

    list和tuple通过下标来访问,而dict则通过key来访问。而当key不存在时会保存,建议使用get()方法:

>>> print d.get('Adam')
95
>>> print d.get('Jason')
None

    Dict具有一些特点:
    1.查找速度快。无论是10个还是10万个,速度都是一样的,但是代价是耗费的内存大。List相反,占用内存小,但是查找速度慢。这就好比是数组和链表的区别,数组并不知道要开辟多少空间,所以往往开始就会开辟一个大空间,但是直接通过下标查找速度快;而链表占用的空间小,但是查找的时候必须顺序的遍历导致速度很慢
    2.没有顺序。Dict是无顺序的,而List是有序的集合,所以不能用Dict来存储有序集合
    3.Key不可变,Value可变。一旦一个键值对加入dict后,它对应的key就不能再变了,但是Value是可以变化的。所以List不可以当做Dict的Key,但是可以作为Value
    4. Key不可重复。(下面例子中添加了一个’Jone’:0,但是实际上原来已经有’Jone’这个Key了,所以仅仅是改了原来的value)

Set

    set 持有一系列元素,这一点和 list 很像,但是set的元素没有重复,而且是无序的,这点和 dict 的 key很像。
    创建 set 的方式是调用 set() 并传入一个 list,list的元素将作为set的元素:

>>> s = set(['A', 'B', 'C'])

    因为set不能包含重复的元素,所以,当我们传入包含重复元素的时候回去掉重复的元素。
    由于set存储的是无序集合,所以我们没法通过索引来访问。访问 set中的某个元素实际上就是判断一个元素是否在set中。

>>> s = set(['Adam', 'Lisa', 'Bart', 'Paul'])
>>> 'Bart' in s
True
>>> 'Bill' in s
False
>>> 'bart' in s
False

    在set中是区分大小写的,但有时候我们不需要区分大小写这时候就要用到python的内置函数name.lower() ,使用name.lower() 可以不区分大小写:

>>>s = set([name.lower() for name in['Adam', 'Lisa', 'Bart', 'Paul']])
>>>print 'adam' in s
True
>>>print 'bart' in s
True

    set的特点:
    set的内部结构和dict很像,唯一区别是不存储value,因此,判断一个元素是否在set中速度很快。
    set存储的元素和dict的key类似,必须是不变对象,因此,任何可变对象是不能放入set中的。
    最后,set存储的元素也是没有顺序的。
    set的增删
    通过add和remove来添加、删除元素(保持不重复),添加元素时,用set的add()方法:

>>> s = set([1, 2, 3])
>>> s.add(4)
>>> print s
set([1, 2, 3, 4])

删除时用remove()方法:

>>> s = set([1, 2, 3, 4])
>>> s.remove(4)
>>> print s
set([1, 2, 3])

注意:set添加元素时如果已经存在不会报错但不会添加进数据;而在删除时元素不存在会直接报错

猜你喜欢

转载自blog.csdn.net/guchengxinfen/article/details/84098226