print "\n+++++++列表推导式++++++++"
auto_list = [x for x in "Good evening!"] #列表推导式1print "列表推导式1:\t",auto_list rows = xrange(1, 6) cols = xrange(10,13)# 生成一个二维数组:在列表中嵌套列表# 总共有len(rows)行,每行中的列元素是[col for col in cols] two_dims_list = [[col for col in cols] for row in rows] #列表推导式2print "列表推导式2:\t",two_dims_listprint "二维数组的类型:\t",type(two_dims_list)print "以友好的二维数组形式打印:"for x intwo_dims_list: #二维数组中的每个元素都是列表 print xprint "\n+++++++字典推导式++++++++" str_ = "Tony"print {index:value for index,value in enumerate(str_)}print "\n+++++++(生成器)++++++++"# 生成器的语法是(statement) ,她会返回一个迭代器供我们迭代取值
"""
语法1:(statement)
语法2:在函数中使用yield关键字
""" gen1 = (g for g in "hello")print "gen1类型:\t", type(gen1)print "从生成器返回的迭代器取值:"for x in gen1: print x,""" 在函数中使用yield关键字,不会像return那样返回给调用者然后退出, 而是保留函数当前执行的结果提供给调用者, 等到下次调用时再执行一次并保留当次执行结果"""def gen2(arg): i = 2 yield i*arg g = gen2(0.5)print "\n g的类型是: ", type(g)for x in g: print xdef gen3(): j = 0 yield j+1print "\n多次调用"for x in range(5): print gen3().next() #通过next()方法执行函数
程序运行结果:
+++++++列表推导式++++++++
列表推导式1: ['G','o', 'o', 'd', ' ', 'e', 'v', 'e', 'n', 'i', 'n', 'g', '!']
列表推导式2: [[10,11, 12], [10, 11, 12], [10, 11, 12], [10, 11, 12], [10, 11, 12]]
二维数组的类型: <type'list'>
以友好的二维数组形式打印:
[10, 11, 12]
[10, 11, 12]
[10, 11, 12]
[10, 11, 12]
[10, 11, 12]
+++++++字典推导式++++++++
{0: 'T', 1: 'o', 2: 'n', 3: 'y'}
+++++++(生成器)++++++++
gen1类型: <type 'generator'>
从生成器返回的迭代器取值:
h e l l o
g的类型是: <type 'generator'>
1.0
多次调用
1
1
1
1
1