可爱的 Python:获得版本 2.0
2007-03-29 12:08:12 来源:WEB开发网核心提示: 版本 1.5x 中各种技术的比较>>># Functional-style spaghetti for list comprehension>>> filter(lambda (x,y): x*y > 25,.....map(None, xs*le
版本 1.5x 中各种技术的比较
>>>
# Functional-style spaghetti for list comprehension
>>> filter(
lambda
(x,y): x*y > 25,
..... map(None, xs*len(ys),
..... reduce(
lambda
s,t: s+t,
..... map(
lambda
y: [y]*len(xs), ys))))
[(3, 9), (4, 9), (5, 9), (4, 8), (5, 8), (4, 7), (5, 7), (5, 6)]
>>>
# Nested loop procedural style for list comprehension
>>> bigmuls = []
>>>
for
x
in
xs:
.....
for
y
in
ys:
.....
if
x*y > 25:
..... bigmuls.append((x,y))
>>>
print
bigmuls
[(3, 9), (4, 9), (4, 8), (4, 7), (5, 9), (5, 8), (5, 7), (5, 6)]
在我给出的示例中,嵌套的程序性循环比函数风格的调用更清晰(读者可能会注意到一种更好的函数方法)。但它们远不及列表内涵风格来得清晰。
通过一些程序员的实践,列表内涵可以代替大多数函数风格内置函数,以及许多嵌套循环的使用。
Python 2.0 中一个新的内置函数在与列表内涵结合时特别有用。可以通过想象拉链的牙齿来认识 zip() 的作用:将两个或多个序列组合成元组的列表(每个元组都具有来自每一调用序列的一个元素)。如果您不希望一个使用完整列表排列的列表内涵,而只是一个利用多个列表的相应元素,这通常是有用的。例如:
更多精彩
赞助商链接