python yield

描述:遍历数据,数据为数字或者由数字填充的列表

不使用生成器

1 data = [[1, 2], [3, 2], [5]]
2 
3 for lst in data:
4     for item in lst:
5         print item

使用生成器

1 data = [[1, 2], [3, 2], [5]]
2 
3 def flatten(nested):
4     for lst in nested:
5         for element in lst:
6             yield element
7 
8 for item in flatten(data):
9     print item

如果嵌套的层数不定

使用生成器

 1 data_1 = [1, 3]
 2 data_2 = [[3, 1], [4, 1]]
 3 data_3 = [1, 2]
 4 
 5 data = [data_1, data_2, data_3]
 6 
 7 def flatten(nested):
 8     try:
 9         for lst in nested:
10             for item in flatten(lst):
11                 yield item
12     except:
13         yield nested
14 
15 for item in flatten(data):
16    print item

 不使用生成器

 1 data_1 = [1, 3]
 2 data_2 = [[3, 1], [4, 1]]
 3 data_3 = [1, 2]
 4 
 5 data = [data_1, data_2, data_3]
 6 
 7 def foo(data):
 8     for item in data:
 9         if type(item) is type(1):
10             print item,
11         else:
12             foo(item)
13 
14 foo(data)

参考:《python基础教程》 人民邮电出版社

python yield,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。