第一章:数据结构和算法
Python 提供了大量的内置数据结构,包括列表,集合以及字典。大多数情况下使用这些数据结构是很简单的。但是,我们也会经常碰到到诸如查询,排序和过滤等等这些普遍存在的问题。 因此,这一章的目的就是讨论这些比较常见的问题和算法。 另外,我们也会给出在集合模块
collections
当中操作这些数据结构的方法。
参考:
https://python3-cookbook.readthedocs.io/zh-cn/latest/index.html
https://github.com/dabeaz/python-cookbook/tree/master
1.1 将序列分解为单独的变量
问题
现在有一个包含 N 个元素的元组或者是序列,怎样将它里面的值解压后同时赋值给 N 个变量?
解决方案
任何的序列(或者是可迭代对象)可以通过一个简单的赋值操作来分解为单独的变量。 唯一的要求就是变量的总数和结构必须与序列相吻合。
#例1:
p = (4, 5)
x, y = p
======
x=4
y=5
#例2:
data = [ 'ACME', 50, 91.1, (2012, 12, 21) ]
name, shares, price, date = data
=============
name='ACME'
date=(2012, 12, 21)
#例3:
name, shares, price, (year, mon, day) = data
==============
name='ACME'
year=2012
mon=12
day=21
讨论
不仅仅只是元组或列表,只要对象是可迭代的,就可以执行分解操作。 包括字符串,文件对象,迭代器和生成器。
s = 'Hello'
a, b, c, d, e = s
data = [ 'ACME', 50, 91.1, (2012, 12, 21) ]
_, shares, price, _ = data