>>> sym = '$#%&*' >>> codes=[] >>> codes = [ord(symbol) for symbol in sym] >>> codes [36, 35, 37, 38, 42]
一个标准的列表推导,我们不必担心换行的问题,我们甚至可以这样使用:
1 2
>>> codes = [ord(symbol, id) for symbol in sym for id in range(0,5)]
生成器推导
这个和列表推导式的格式很像,仅仅把方括号换成圆括号。
生成器推导可以逐个产生元素,而不是直接产生一个完整的列表。
我们使用生成器表达式计算笛卡尔积
例子:
1 2 3 4 5 6 7 8 9
>>> for tshirt in ('%s %s' % (c,s) for c in colors for s in sizes): ... print(tshirt) ... black S black M black L white S white M white L
总结
列表生成式是直接生成一个完整的列表,而生成器推导则是可以逐个产生元素
一个例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
>>> for o in (ord(symbol) for symbol in sym): ... print(o) ... 36 35 37 38 42 >>> [ord(symbol) for symbol in sym] [36, 35, 37, 38, 42] >>> type([ord(symbol) for symbol in sym]) <class 'list'> >>> type(ord(symbol) for symbol in sym) <class 'generator'>