python数据结构常用方法总结

一、列表

下面列举一下列表常用的自带方法
1.1 list.append(x)
1.2 list.remove(x)
1.3 list.insert(i,x)
1.4 list.pop(i)按索引移除, list.pop() 移除最后一个元素
1.5 list.index(x[,start[,end]])
1.6 list.clear() 删除列表所有元素
1.7 del list 删除列表这个变量
1.8 list.count(x)返回列表中x的个数
1.9 list.sort(*, key=None, reverse=False) 改变列表本身
1.10 list.reverse() 反转列表中的元素,改变列表本身
1.11 list.copy() 返回列表的浅拷贝,相当于a[:]
1.12 列表推导式

[x**2 for x in range(10)]
[(x, x**2) for x in range(10)]
[ (x,y) for x in [1,2,3] for y in [3,1,4] if x!=y ]

二、元组

2.1 元组是不可变的,给元组中单独一个元素赋值是不允许的,但是如果其元素是列表等可变,则可以对该元素进行修改。如

>>> t = 123, 456, [1,2,3], 'abc'
>>> t[0] = 234
Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    t[0] = 234
TypeError: 'tuple' object does not support item assignment
>>> t[2].append(4)
>>> t
(123, 456, [1, 2, 3, 4], 'abc')

2.2 序列解包。序列解包要求等号左侧对变量数与右侧序列里所包含的元素数相同。如

>>> t
(123, 456, [1, 2, 3, 4], 'abc')
>>> a,b,c,d = t
>>> a
123
>>> b
456
>>> c
[1, 2, 3, 4]
>>> d
'abc'

三、集合

集合是由不重复元素组成的无序的集。花括号或者set()都可以用来创建集合。
注:要创建一个空集合只能用set(),{}是创建一个空的字典
类似于列表,集合也支持推导式形式

>>> s = {x for x in 'ejrljsdnvietohgnvdanw' if x not in 'abc'}
>>> s
{'g', 'v', 'l', 't', 'd', 'h', 's', 'r', 'i', 'o', 'j', 'n', 'w', 'e'}

四、字典

4.1 创建字典的方式

# 使用花括号
>>> d = {'jack':4098, 'sjoerd':2345}
# 使用字典推导式
>>> square = {x:x**2 for x in range(1,10)}
>>> square
{1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}
# 使用类型构造器
>>> dict([('jack',4098), ('sjoerd',2345)])
{'jack': 4098, 'sjoerd': 2345}

4.2 list(d)以列表的形式返回字典的键
4.3 len(d)返回字典的项数
4.4 d[key]
4.5 key in d
4.6 key not in d
4.7 iter(d)返回以字典的键为元素的迭代器
4.8 d.clear()
4.9 d.copy()
4.10 del d
4.11 d.get(key)
4.12 d.items()返回由字典项(键,值)组成的一个新视图

>>> d1
{'one': 1, 'two': 2, 'three': 3}
>>> d1.items()
dict_items([('one', 1), ('two', 2), ('three', 3)])

4.13 d.keys()
4.14 d.values()
4.15 d.pop(key)从字典中移除并返回d[key]的值
4.16 d.popitem()按后进先出的顺序移除并返回后进的键值对
4.17 reversed(d)返回一个逆序获取字典键的迭代器。这是reversed(d.keys())的快捷方式。

>>> d1
{'two': 2, 'four': 4}
>>> for key in d1:
    print(key)
two
four
>>> for key in reversed(d1):
    print(key)  
four
two

4.18 d.setdefault(key[,default]) 如果字典存在key,则返回它的值。如果不存在,则插入值为default的键key,并返回default

>>> d1
{'two': 2, 'four': 4}
>>> d1.setdefault('three',3)
3
>>> d1
{'two': 2, 'four': 4, 'three': 3}
>>> d1.setdefault('two')
2
>>> d1
{'two': 2, 'four': 4, 'three': 3}

4.19 d.update(other)使用来自other的键值对更新字典,覆盖原有的键。返回None

>>> d
{'one': 1, 'two': 2}
>>> d.update({'one':11,'three':3})
>>> d
{'one': 11, 'two': 2, 'three': 3}
>>> 

五、循环的技巧

5.1 字典中循环

>>> for k,v in d.items():
    pass

5.2 序列中循环

>>> a = ['cat','dog','tiger']
>>> for i,v in enumerate(a):
    print(i,v)  
0 cat
1 dog
2 tiger

5.3 在两个或多个序列中循环时,可以用zip()函数将其内元素一一匹配

>>> questions = ['name','guest','favorite color']
>>> answers = ['lancelot', 'the holy qrail', 'blue']
>>> for q,a in zip(questions,answers):
    print("What's your {0}? It's {1}.".format(q,a)) 
What's your name? It's lancelot.
What's your guest? It's the holy qrail.
What's your favorite color? It's blue.

5.4 逆向循环一个序列

>>> for i in reversed(range(1,10,2)):
    print(i)
9
7
5
3
1
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容