06-python-data-structure
6. Python基础之:Python的数据结构
简介
不管是做科学计算还是编写应用程序,都需要使用到一些基本的数据结构,比如列表,元组,字典等。
本文将会详细讲解Python中的这些基础数据结构。
列表
列表也就是list,可以用方括号来表示:
In [40]: ages = [ 10, 14, 18, 20 ,25]
In [41]: ages
Out[41]: [10, 14, 18, 20, 25]list有一些非常有用的方法,比如append,extend,insert,remove,pop,index,count,sort,reverse,copy等。
举个例子:
>>> fruits = ['orange', 'apple', 'pear', 'banana', 'kiwi', 'apple', 'banana']
>>> fruits.count('apple')
2
>>> fruits.count('tangerine')
0
>>> fruits.index('banana')
3
>>> fruits.index('banana', 4) # Find next banana starting a position 4
6
>>> fruits.reverse()
>>> fruits
['banana', 'apple', 'kiwi', 'banana', 'pear', 'apple', 'orange']
>>> fruits.append('grape')
>>> fruits
['banana', 'apple', 'kiwi', 'banana', 'pear', 'apple', 'orange', 'grape']
>>> fruits.sort()
>>> fruits
['apple', 'apple', 'banana', 'banana', 'grape', 'kiwi', 'orange', 'pear']
>>> fruits.pop()
'pear'列表作为栈使用
栈的特点是后进先出,而列表为我们提供了append和pop方法,所以使用列表来实现栈是非常简单的:
列表作为队列使用
队列的特点是先进先出,但是使用列表在队列头部插入元素是很慢的,因为需要移动所有的元素。
我们可以使用 collections.deque 来快速的从两端操作:
列表推导式
要创建列表,通常的做法是使用for循环,来遍历列表,并为其设置值:
或者我们可以使用列表推导式来更加简洁的生成列表:
列表推导式的结构是由一对方括号所包含的以下内容:一个表达式,后面跟一个 for 子句,然后是零个或多个 for 或 if 子句。
列表推导式将会遍历for字句中的元素,并且使用表达式来求值,将生成的元素作为新的列表元素返回。
看一个复杂点的:
上面的表达式等价于:
列表推导式还可以嵌套,假如我们有一个矩阵:
可以使用下面的表达式将矩阵进行行列交换:
或者使用更加简单的zip函数:
del
删除列表中的某个元素可以使用del。del可以删除列表中的某个特定的值,也可以删除切片,甚至删除整个列表:
元组
元组跟列表很类似,不同的是元组是不可变的。
元组是以小括号来表示的,或者可以不使用括号。
元组和List的操作很类似,都有切片和索引操作。
元组可以方便的进行解包:
集合
集合使用set函数或者花括号来表示的。
集合中的元素是不重复的,这个一点和java中的set很类似。
因为字典的表示也是花括号,所以如果你需要创建一个空集合的话,需要使用set,因为空的 {} 表示的是字典。
看一些集合的简单例子:
和列表一样,集合也支持推导式:
字典
字典也是用花括号来表示的,不同的是字典中的元素是以 key:value的形式呈现的。
下面是字典的一些基本操作:
除了花括号,还可以使用dict函数来构建字典:
如果关键字是简单的字符的话,可以直接这样写:
同样的推导式也可以使用:
循环
我们一般使用for语句来遍历集合或者字典,list等。
当我们遍历字典的时候,可以使用items()方法来同时获取到key和value:
如果是列表,那么可以使用enumerate 函数来获取到index和value:
之前我们还使用了zip函数,zip函数可以将多个序列中的元素一一匹配:
本文已收录于 www.flydean.com
最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现!
欢迎关注我的公众号:「程序那些事」,懂技术,更懂你!
最后更新于
这有帮助吗?