我是 python 新手,但一般不会编程。检查“Dive into Python”我发现了这个例子(有效),但我没有得到语法。
return ";".join(["%s=%s" % (k, v) for k, v in params.items()])
简单地说,它使用变量 k 和 v 作为“%s=%s”的字符串(这里没什么奇怪的),但这些变量还没有任何值。就像那样,有一个for循环,它迭代并为 k 和 v 赋值。所以这让我感到困惑: 1. for循环以某种方式“返回” k 和 v 值到前一个语句(k,v)。2. 两个语句(1. "%s=%s" % (k, v)和 2. for k, v in params.items())可以在同一行,没有语法错误。
我已经检查了“for”语法参考,它甚至没有暗示这个方向,所以我确定我必须检查其他地方,但不知道在哪里。
先感谢您。
列表推导式是一种将一个列表(实际上任何可迭代的)转换为另一个列表的工具。在此转换过程中,可以有条件地将元素包含在新列表中,并且可以根据需要转换每个元素。
如果您熟悉函数式编程,您可以将列表推导式视为 afilter
后跟 a 的语法糖map
:
>>> doubled_odds = map(lambda n: n * 2, filter(lambda n: n % 2 == 1, numbers))
>>> doubled_odds = [n * 2 for n in numbers if n % 2 == 1]
每个列表推导式都可以重写为 for 循环,但并非每个 for 循环都可以重写为列表推导式。
如果您可以将代码重写为如下所示的 for 循环,您也可以将其重写为列表推导式:
new_things = []
for ITEM in old_things:
if condition_based_on(ITEM):
new_things.append("something with " + ITEM)
您可以将上面的 for 循环重写为这样的列表推导式:
new_things = ["something with " + ITEM for ITEM in old_things if condition_based_on(ITEM)]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句