我是python的新手但不是一般的编程。检查"潜入Python"我找到了这个例子(有效),但我没有得到语法。
<dom-module id="my-element">
<template>
<input id="fileinput" type="file" on-change="hello"/>
</template>
<script>
class MyElement extends Polymer.Element {
static get is() { return 'my-element'; }
hello(evt) {
console.log(evt);
}
}
window.customElements.define(MyElement.is, MyElement);
</script>
</dom-module>
简单地说,它使用变量k和v作为&#34;%s =%s&#34;的字符串。 (这里没什么奇怪的)但这些变量还没有任何价值。就像那样,有一个 for 循环,它迭代并为k和v赋值。所以这就是让我困惑的事情: 1. for 循环是&#34;返回&#34; 以某种方式将k和v值映射到前一个语句(k,v)。 2.两个陈述(1. &#34;%s =%s&#34;%(k,v)和2. for k,v in params.items())可以在同一行,没有语法错误。
我检查过&#34; for&#34;语法参考,它甚至没有暗示这个方向,所以我确定我必须在其他地方检查,但不知道在哪里。
提前谢谢。
答案 0 :(得分:1)
param.items() = [(key1, val1), (key2, val2) ... ]
此列表理解的扩展代码。首先在方括号内生成列表,然后通过将其传递给join方法将列表连接在一起。
new_list = []
for each_tuple in param.items():
k = each_tuple(0)
v = each_tuple(1)
new_list.append("%s==%s" % (k, v,))
":".join(new_list) # new_list = ['k1==v1', 'k2==v2', 'k3==v3',...]
>>> 'key1==value1:key2==value2:key3==value3....'
答案 1 :(得分:1)
列表推导是一种将一个列表(实际上是任何可迭代的)转换为另一个列表的工具。在此转换期间,元素可以有条件地包含在新列表中,并且可以根据需要转换每个元素。
如果您熟悉函数式编程,您可以将列表推导视为filter
后跟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)]