1、列表解析

列表解析是一个令人欣喜的功能,他提供了一个更简单的方法去生成一个列表。
每个列表解析包括在一个计算表达式,零个或多个for或者if语句。列表解析的结果是for或者if语句得到的序列元素通过前面的计算表达式计算后的结果组成的列表。
列表解析看起来是这样的:
  1. In [1]: [x for x in range(10)] 
  2. Out[1]: [0123456789
  3.  
  4. In [2]: [x*x for x in range(10)] 
  5. Out[2]: [0149162536496481
  6.  
  7. In [3]: [x*x for x in range(10if x % 2==0
  8. Out[3]: [04163664
通过例子,我们可以发现列表解析的规律很简单。
第一,确定我们要得到的列表中元素的规律。
第二,通过什么样的for和if语句能得到这样规律的一个元素序列。
第三,将for和if语句中的计算部分提取出来放在解析表达式的前面。
第四,将for和if语句写在后面。
第五,用[]括起来。
通过这五步,我们就可以写出任何复杂度的列表解析表达式。由于for和if语句里面的计算部分可以是任意的,包括四则运算,函数调用等等,所以列表解析表达式的计算部分也可以有函数调用等复杂的应用。
2、set 集合
set(集合)是一个包含无序的不重复的元素的集合,基本功能包括关系测试和消除重复的元素。集合还支持union(联合),intersection(交),difference(差)和sysmmetric_difference(对称差集)等运算。
set这种数据类型类似于数学上的集合。
看下set的样子:
  1. In [7]: a = set([0123456789]) 
  2. In [8]: a 
  3. Out[8]: set([0123456789]) 
  4.  
  5. In [9]: type(a) 
  6. Out[9]:  
  7.  
  8. In [10]: 2 in a 
  9. Out[10]: True 
  10.  
  11. In [11]: b = set('abdcddg'
  12.  
  13. In [12]: b 
  14. Out[12]: set(['a''b''c''d''g']) 
  15.  
  16. In [14]: a - b 
  17. Out[14]: set([0123456789]) 
  18.  
  19. In [15]: a | b 
  20. Out[15]: set([0123456789'a''b''c''d''g']) 
  21.  
  22. In [16]: a & b 
  23. Out[16]: set() 
  24.  
  25. In [17]: a ^ b 
  26. Out[17]: set([0123456789'a''b''c','d''g'])