Python中内置数据类型list,tuple,dict,set的区别和用法 Python中list,tuple,dict,set的区别和...

Python\u4e2d\u5185\u7f6e\u6570\u636e\u7c7b\u578blist\uff0ctuple\uff0cdict\uff0cset\u7684\u533a\u522b\u548c\u7528\u6cd5

python \u4e2dlist\uff0ctuple\uff0cdict\uff0cset\u662f\u6700\u5e38\u7528\u7684\u96c6\u5408\u7c7b\u578b\u3002
list\u5217\u8868\uff0c\u76f8\u5f53\u4e8e\u4e00\u4e2a\u6570\u7ec4\uff0c\u4e0d\u8fc7list\u7684\u957f\u5ea6\u662f\u81ea\u52a8\u53d8\u5316\u7684\u800c\u4e14\u5217\u8868\u5143\u7d20\u81ea\u7531\u7684\uff0c\u4e0d\u5fc5\u6bcf\u4e2a\u5143\u7d20\u90fd\u662f\u540c\u4e00\u79cd\u7c7b\u578b\u3002\u5b83\u7684\u7b80\u6d01\u7684\u5b9a\u4e49\u65b9\u5f0f\u662fa=[]\u3002\u6709\u5e8f\u7ec4\u5408
tuple\u4e5f\u662f\u4e00\u4e2a\u7ec4\u5408\u3002\u4e0d\u8fc7tuple\u5728\u5b9a\u4e49\u597d\u4e4b\u540e\u5c31\u4e0d\u80fd\u518d\u53d8\u5316\u3002\u5b83\u7684\u7b80\u6d01\u7684\u5b9a\u4e49\u65b9\u5f0f\u662fa=1,3\u4e5f\u53ef\u4ee5\u662fa=(1,3).\u6709\u5e8f\u7ec4\u5408\u3002
dict\u662f\u5b57\u5178\u7c7b\u578b\u3002\u4e5f\u5c31\u662f\u952e\u503c\u5bf9\u7c7b\u578b\u3002\u952e\u540d\u4e0d\u53ef\u4ee5\u91cd\u590d\uff0c\u5e76\u4e14\u4e0d\u53ef\u4ee5\u53d8\u5316\uff08\u5b57\u7b26\u4e32\u5c31\u7b26\u5408\u8fd9\u4e2a\u8981\u6c42\uff0c\u5e38\u7528\u5b57\u7b26\u4e32\u4f5c\u4e3a\u952e\u540d\uff09\u3002\u5b83\u7684\u7b80\u6d01\u7684\u5b9a\u4e49\u65b9\u5f0f\u662fa={}.\u65e0\u5e8f\u7ec4\u5408\uff08\u610f\u601d\u5c31\u662f\u4f60\u65e0\u6cd5\u6309\u7167\u6dfb\u52a0\u7684\u987a\u5e8f\u5bf9\u4ed6\u8fdb\u884c\u904d\u5386\uff09\u3002
set\u662fset\u7c7b\u578b\uff08\u4e0d\u597d\u7ffb\u8bd1\uff0c\u7528\u7684\u4e5f\u5c11\uff09\u3002\u4e5f\u662f\u4e00\u4e2a\u65e0\u5e8f\u7684\u7ec4\u5408\uff0c\u5143\u7d20\u662f\u4e92\u65a5\u7684\uff0c\u4e5f\u5c31\u4e0d\u4f1a\u51fa\u73b0\u76f8\u540c\u7684\u5143\u7d20\u3002\u53ef\u4ee5\u628a\u4e00\u4e2a\u5e8f\u5217\u8f6c\u6362\u6210\u65e0\u91cd\u590d\u5143\u7d20\u7684set.\u65e0\u5e8f\u7ec4\u5408\u3002
\u4ee5\u4e0b\u662f\u4f7f\u7528\u7684\u793a\u4f8b\u4ee3\u7801\u3002

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

a_tuple=(1,3423,'34')
a_list=[12,12.34,'sds']
a_dict={'key1':1,'key2':2}
a_set=set('2323')
for t in a_tuple:
print('%s in tuple'%t)
print('*'*10)
for l in a_list:
print('%s in list'%l)
print('*'*10)
for k,v in a_dict.items():
print('key=%s,value=%s in dict'%(k,v))
print('*'*10)
for s in a_set:
print('%s in set'%s)
print('*'*10)

\u67e5\u627e\u901f\u5ea6\u5feb\u3002\u65e0\u8bba\u662f10\u4e2a\u8fd8\u662f10\u4e07\u4e2a\uff0c\u901f\u5ea6\u90fd\u662f\u4e00\u6837\u7684\uff0c\u4f46\u662f\u4ee3\u4ef7\u662f\u8017\u8d39\u7684\u5185\u5b58\u5927\u3002List\u76f8\u53cd\uff0c\u5360\u7528\u5185\u5b58\u5c0f\uff0c\u4f46\u662f\u67e5\u627e\u901f\u5ea6\u6162\u3002\u8fd9\u5c31\u597d\u6bd4\u662f\u6570\u7ec4\u548c\u94fe\u8868\u7684\u533a\u522b\uff0c\u6570\u7ec4\u5e76\u4e0d\u77e5\u9053\u8981\u5f00\u8f9f\u591a\u5c11\u7a7a\u95f4\uff0c\u6240\u4ee5\u5f80\u5f80\u5f00\u59cb\u5c31\u4f1a\u5f00\u8f9f\u4e00\u4e2a\u5927\u7a7a\u95f4\uff0c\u4f46\u662f\u76f4\u63a5\u901a\u8fc7\u4e0b\u6807\u67e5\u627e\u901f\u5ea6\u5feb\uff1b\u800c\u94fe\u8868\u5360\u7528\u7684\u7a7a\u95f4\u5c0f\uff0c\u4f46\u662f\u67e5\u627e\u7684\u65f6\u5019\u5fc5\u987b\u987a\u5e8f\u7684\u904d\u5386\u5bfc\u81f4\u901f\u5ea6\u5f88\u6162
\u6ca1\u6709\u987a\u5e8f\u3002Dict\u662f\u65e0\u987a\u5e8f\u7684\uff0c\u800cList\u662f\u6709\u5e8f\u7684\u96c6\u5408\uff0c\u6240\u4ee5\u4e0d\u80fd\u7528Dict\u6765\u5b58\u50a8\u6709\u5e8f\u96c6\u5408
Key\u4e0d\u53ef\u53d8\uff0cValue\u53ef\u53d8\u3002\u4e00\u65e6\u4e00\u4e2a\u952e\u503c\u5bf9\u52a0\u5165dict\u540e\uff0c\u5b83\u5bf9\u5e94\u7684key\u5c31\u4e0d\u80fd\u518d\u53d8\u4e86\uff0c\u4f46\u662fValue\u662f\u53ef\u4ee5\u53d8\u5316\u7684\u3002

这篇文章主要给大家介绍了Python中内置数据类型list,tuple,dict,set的区别和用法,都是非常基础的知识,十分的细致全面,有需要的小伙伴可以参考下。

Python语言简洁明了,可以用较少的代码实现同样的功能。这其中Python的四个内置数据类型功不可没,他们即是list, tuple, dict, set。这里对他们进行一个简明的总结。
List
字面意思就是一个集合,在Python中List中的元素用中括号[]来表示,可以这样定义一个List:
L = [12, 'China', 19.998]

可以看到并不要求元素的类型都是一样的。当然也可以定义一个空的List:
L = []

Python中的List是有序的,所以要访问List的话显然要通过序号来访问,就像是数组的下标一样,一样是下标从0开始:
>>> print L[0]
12

千万不要越界,否则会报错
>>> print L[3]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range

List也可以倒序访问,通过“倒数第x个”这样的下标来表示序号,比如-1这个下标就表示倒数第一个元素:
>>> L = [12, 'China', 19.998]
>>> print L[-1]
19.998

-4的话显然就越界了
>>> print L[-4]

Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
print L[-4]
IndexError: list index out of range
>>>

List通过内置的append()方法来添加到尾部,通过insert()方法添加到指定位置(下标从0开始):
>>> L = [12, 'China', 19.998]
>>> L.append('Jack')
>>> print L
[12, 'China', 19.998, 'Jack']
>>> L.insert(1, 3.14)
>>> print L
[12, 3.14, 'China', 19.998, 'Jack']
>>>

通过pop()删除最后尾部元素,也可以指定一参数删除指定位置:
>>> L.pop()
'Jack'
>>> print L
[12, 3.14, 'China', 19.998]
>>> L.pop(0)
12
>>> print L
[3.14, 'China', 19.998]

也可以通过下标进行复制替换
>>> L[1] = 'America'
>>> print L
[3.14, 'America', 19.998]

Tuple
Tuple可以看做是一种“不变”的List,访问也是通过下标,用小括号()表示:
>>> t = (3.14, 'China', 'Jason')
>>> print t
(3.14, 'China', 'Jason')

但是不能重新赋值替换:
>>> t[1] = 'America'

Traceback (most recent call last):
File "<pyshell#21>", line 1, in <module>
t[1] = 'America'
TypeError: 'tuple' object does not support item assignment

也没有pop和insert、append方法。
可以创建空元素的tuple:
t = ()
或者单元素tuple (比如加一个逗号防止和声明一个整形歧义):
t = (3.14,)
那么tuple这个类型到底有什么用处呢?要知道如果你希望一个函数返回多个返回值,其实只要返回一个tuple就可以了,因为tuple里面的含有多个值,而且是不可变的(就像是java里面的final)。当然,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])

这是因为Tuple所谓的不可变指的是指向的位置不可变,因为本例子中第四个元素并不是基本类型,而是一个List类型,所以t指向的该List的位置是不变的,但是List本身的内容是可以变化的,因为List本身在内存中的分配并不是连续的。
Dict
Dict是Python中非常重要的数据类型,就像它的字面意思一样,它是个活字典,其实就是Key-Value键值对,类似于HashMap,可以用花括号{}通过类似于定义一个C语言的结构体那样去定义它:
>>> d = {
'Adam': 95,
'Lisa': 85,
'Bart': 59,
'Paul': 75
}
>>> print d
{'Lisa': 85, 'Paul': 75, 'Adam': 95, 'Bart': 59}

可以看到打印出来的结果都是Key:Value的格式,可以通过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来访问: (字符串、整型、浮点型和元组tuple都可以作为dict的key)
>>> print d['Adam']
95

如果Key不存在,会报错:
>>> print d['Jack']

Traceback (most recent call last):
File "<pyshell#40>", line 1, in <module>
print d['Jack']
KeyError: 'Jack'

所以访问之前最好先查询下key是否存在:
>>> if 'Adam' in d : print 'exist key'

exist key

或者直接用保险的get方法:
>>> print d.get('Adam')
95
>>> print d.get('Jason')
None

至于遍历一个dict,实际上是在遍历它的所有的Key的集合,然后用这个Key来获得对应的Value:
>>> for key in d : print key, ':', d.get(key)

Lisa : 85
Paul : 75
Adam : 95
Bart : 59

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

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

Key不可重复。(下面例子中添加了一个'Jone':0,但是实际上原来已经有'Jone'这个Key了,所以仅仅是改了原来的value)

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

Dict的合并,如何将两个Dict合并为一个,可以用dict函数:
>>> d1 = {'mike':12, 'jack':19}
>>> d2 = {'jone':22, 'ivy':17}
>>> dMerge = dict(d1.items() + d2.items())
>>> print dMerge
{'mike': 12, 'jack': 19, 'jone': 22, 'ivy': 17}

或者
>>> dMerge2 = dict(d1, **d2)
>>> print dMerge2
{'mike': 12, 'jack': 19, 'jone': 22, 'ivy': 17}

方法2比方法1速度快很多,方法2等同于:
>>> dMerge3 = dict(d1)
>>> dMerge3.update(d2)
>>> print dMerge
{'mike': 12, 'jack': 19, 'jone': 22, 'ivy': 17}

set
set就像是把Dict中的key抽出来了一样,类似于一个List,但是内容又不能重复,通过调用set()方法创建:
>>> s = set(['A', 'B', 'C'])
就像dict是无序的一样,set也是无序的,也不能包含重复的元素。
对于访问一个set的意义就仅仅在于查看某个元素是否在这个集合里面:
>>> print 'A' in s
True
>>> print 'D' in s
False

大小写是敏感的。
也通过for来遍历:
s = set([('Adam', 95), ('Lisa', 85), ('Bart', 59)])
#tuple
for x in s:
print x[0],':',x[1]

>>>
Lisa : 85
Adam : 95
Bart : 59

通过add和remove来添加、删除元素(保持不重复),添加元素时,用set的add()方法:
>>> s = set([1, 2, 3])
>>> s.add(4)
>>> print s
set([1, 2, 3, 4])

如果添加的元素已经存在于set中,add()不会报错,但是不会加进去了:
>>> s = set([1, 2, 3])
>>> s.add(3)
>>> print s
set([1, 2, 3])

删除set中的元素时,用set的remove()方法:
>>> s = set([1, 2, 3, 4])
>>> s.remove(4)
>>> print s
set([1, 2, 3])

如果删除的元素不存在set中,remove()会报错:
>>> s = set([1, 2, 3])
>>> s.remove(4)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 4

所以如果我们要判断一个元素是否在一些不同的条件内符合,用set是最好的选择,下面例子:
months = set(['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec',])
x1 = 'Feb'
x2 = 'Sun'

if x1 in months:
print 'x1: ok'
else:
print 'x1: error'

if x2 in months:
print 'x2: ok'
else:
print 'x2: error'

>>>
x1: ok
x2: error

  • python涓list琛ㄧず浠涔
    绛旓細list鏄python璇█涓殑鍩烘湰鏁版嵁绫诲瀷鍒楄〃锛屼娇鐢╗]琛ㄧず锛涘垪琛ㄤ腑鍏冪礌鐨勭被鍨嬪彲浠ヤ笉鐩稿悓锛屽畠鏀寔鏁板瓧锛屽瓧绗︿覆鐢氳嚦鍙互鍖呭惈鍒楄〃锛屽涓嬶細ak = [1, '67',true,[23,45,67]]
  • python鏁版嵁绫诲瀷
    绛旓細Python涓鐨鏁版嵁绫诲瀷鍖呮嫭鏁板瓧銆佸瓧绗︿覆銆佸垪琛ㄣ佸厓缁勩侀泦鍚堝拰瀛楀吀銆備互涓嬫槸姣忕绫诲瀷鐨勭畝瑕佽鏄庯細- 鏁板瓧锛氬寘鎷暣鏁般佹诞鐐规暟鍜屽鏁般- 瀛楃涓诧細鐢变竴绯诲垪瀛楃缁勬垚锛屽彲浠ヤ娇鐢ㄥ崟寮曞彿銆佸弻寮曞彿鎴栦笁寮曞彿鏉ヨ〃绀恒- 鍒楄〃锛氱敱涓绯诲垪鏈夊簭鐨勫厓绱犵粍鎴愶紝鍙互鍖呭惈涓嶅悓绫诲瀷鐨勫厓绱犮- 鍏冪粍锛氫笌鍒楄〃绫讳技锛屼絾鏄厓绱犱笉鑳戒慨鏀广- ...
  • li鏄粈涔堟剰鎬
    绛旓細2. 缂栫▼涓殑LI锛氬湪缂栫▼璇涓嬶紝LI鍙兘鏄竴涓彉閲忓悕锛岀敤浜庝唬琛ㄥ垪琛ㄦ垨鍏朵粬鏁版嵁绫诲瀷銆傚叿浣撶殑鍚箟鍙栧喅浜庣紪绋嬭瑷鍜岀▼搴忓憳鐨勫懡鍚嶄範鎯備緥濡傦紝鍦≒ython璇█涓紝甯歌鐨勫垪琛ㄦ搷浣滃寘鎷坊鍔犲厓绱犮佸垹闄ゅ厓绱犮佹煡鎵惧厓绱犵瓑銆3. 鍏朵粬棰嗗煙鐨凩I锛氬湪鍏朵粬棰嗗煙锛屽鍖诲鎴栧寲瀛﹂鍩燂紝LI鍙兘鏈夌壒瀹氱殑涓撲笟鍚箟銆備緥濡傦紝鍦ㄥ尰瀛︽枃鐚腑...
  • li[1][1]鍦╬ython涓浠涔堟剰鎬
    绛旓細琛ㄧず涓涓祵濂楀垪琛紙鎴栦簩缁村垪琛級涓殑鍏冪礌锛屽叾涓涓涓柟鎷彿鎸囩ず瑕佽闂殑鍒楄〃鐨勮绱㈠紩锛岀浜屼釜鏂规嫭鍙锋寚绀鸿鍦ㄨ琛屼腑璁块棶鐨勫垪绱㈠紩銆備緥濡傦紝濡傛灉li鏄竴涓簩缁村垪琛紝li[1][1]灏嗚繑鍥炶鍒楄〃涓浜岃绗簩鍒楃殑鍏冪礌銆傛敞鎰忥紝鍦≒ython涓锛岀储寮曚粠0寮濮嬶紝鍥犳绗竴涓厓绱犵殑绱㈠紩涓0锛岃屼笉鏄1銆
  • python涓瀛楀吀鏄竴涓粈涔堢殑闆嗗悎
    绛旓細闆嗗悎:鍜屽瓧鍏稿熀鏈浉鍚岋紝鍞竴鐨勫尯鍒湪浜庨泦鍚堟病鏈夐敭鍜屽肩殑閰嶅锛屾槸涓绯诲垪鏃犲簭鐨勩佸敮涓鐨勫厓绱犵粍鍚堛傚垪琛(list)list鏄python涓鍩虹鐨鏁版嵁绫诲瀷涔嬩竴锛屽畠鏄互闂╙鎷捣鏉ワ紝姣忎釜鍏冪礌浠ラ楀彿闅斿紑銆li=["False',123,True,(1,2,3),[1,5,9],age':'18'1.鍒楄〃鐩告瘮涓庡瓧绗︿覆锛屼笉浠呭彲浠ュ瓨鍌ㄤ笉鍚岀殑鏁版嵁绫诲瀷锛岃屼笖...
  • 搴忓垪绫诲瀷-鍒楄〃鐨鎿嶄綔
    绛旓細Python閽堝鍒楄〃鏁版嵁缁撴瀯鍐呯疆鎻愪緵浜 sort() 鏂规硶锛屽疄鐜板鍒楄〃鍏冪礌鐨勬帓搴忓姛鑳姐傚叾鍩烘湰璇硶濡備笅锛氬叾涓紝渚嬪锛岀粰瀹氫竴涓浜哄垪琛╣uests, 鎴戜滑瀵瑰叾鎸夌収瀛楁瘝鎺掑簭濡備笅锛氱▼搴忚緭鍑虹粨鏋滐細 ['li si','qian ba','sun qi','wang wu','zhang san'] ['zhang san','wang wu','sun qi','qian ba','li...
  • python涓,鏈夊垪琛li=[1,2,3,4,5],涓や袱涔嬪拰鎬庝箞姹?
    绛旓細li=[1,2,3,4,5]li_length = len(li)for i in range(li_length-1):print(li[i]+li[i+1])
  • python鍒楄〃鐨勫熀鏈搷浣
    绛旓細python鍒楄〃鐨勫熀鏈搷浣滃涓嬶細01 '''02 鍒楄〃锛氭湁闈炲父閲嶈鐨勫湴浣嶃(list)03 [椤,椤...]04 '''05 list1=['zhang san','li si','wang wu']06 print(list1)07 #鐩存帴鍒涘缓鍒楄〃 08 list0=[]#绌哄垪琛 09 print(type(list0))#绫诲瀷 10 list2=[1,2,3,4,5]#鏁板鍨嬪垪琛 11 list3=['寮犱笁...
  • 姹傞棶Python 涓,list 鍜宭ist[:]鐨勫尯鍒傚涓嬮潰涓や釜灏忕▼搴,涓轰粈涔堟墽琛岀粨鏋...
    绛旓細绗竴涓紝li鍦ㄨ繍琛屾椂鍙戠敓浜嗗彉鍖栵紝鏃犳硶缁х画杩唬浜嗐傛渶濂戒笉瑕佽繖鏍锋潵淇敼寰幆浣撱傜浜屼釜li[:]瀹為檯涓婂彲浠ョ湅浣滀竴涓嚱鏁帮紝杩斿洖浜li鐨鍏ㄩ儴鍏冪礌锛屾崲鍙ヨ瘽璇达紝li鏄笉绛変簬li[:]鐨勶紝li[:]鏄痩i鐨勪竴涓鍒讹紝鎵浠ヤ慨鏀筶i骞朵笉浼氬宸茬粡鐢熸垚鐨刲i[:]浜х敓褰卞搷锛屾墍鏈変互ab寮澶寸殑瀛楃涓插湪li[:]涓殑閮戒細琚鏌ュ埌銆
  • pyp(Python缂栫▼璇█)
    绛旓細print(name[1:3])鐗嬭緭鍑虹粨鏋滀负"li"鍒楄〃鎿嶄綔 Python涓鐨勫垪琛ㄦ槸涓绉嶆湁搴忕殑銆佸彲鍙樼殑鏁版嵁绫诲瀷锛屽彲浠ュ瓨鍌ㄥ涓厓绱犮傛垜浠彲浠ヤ娇鐢ㄦ柟鎷彿锛圼]锛夋潵鍒涘缓鍒楄〃锛屽苟浣跨敤绱㈠紩鏉ヨ闂垪琛ㄤ腑鐨勫厓绱犮備緥濡傦細fruits=["apple","banana","orange"]print(fruits[0])鐗嬭緭鍑虹粨鏋滀负"apple"fruits.append("grape")print(...
  • 扩展阅读:学python后到底能干什么 ... python内置数据类型char ... c++和python先学哪个 ... python基础代码大全 ... python四种内置数值类型 ... 不是python内置数据类型 ... python不可变数据类型 ... python一共有几级 ... python基本类型转换 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网