Difference In List - Python - Syntax Explanation
有人能解释下一行代码后面的语法的含义吗?
1 | temp3 = [x for x in temp1 if x not in s] |
我知道这是为了找出两个列表之间的区别,但是"x"在这里代表什么?正在比较的列表中的每个元素?我知道
1 | [x for x in temp1 if x not in s] |
稍微重新排序可能会有帮助,这样您就可以从左到右阅读整个内容。让我们把第一个
1 | [for x in temp1 if x not in s yield x] |
。
我添加了一个假的
1 | [for x in temp1: if x not in s: yield x] |
。
事实上,这就是评估的顺序。
事实上,最后的重写就是如何编写显式生成器函数。
1 2 3 4 | def func(temp1, s): for x in temp1: if x not in s: yield x |
如果你打电话给
它遍历
这是一种更短、更具Python般的写作方式。
1 2 3 4 | temp3 = [] for item in temp1: if item not in s: temp3.append(item) |
号
其中,
至于你的第二个问题,江户十一〔六〕行得通,但可能不符合你的意愿,当然也不是很有用。它将把
不要把这当作是说在列表理解中使用不同的变量永远是没有用的。事实上,像
试试你自己:
1 2 | arr = [1,2,3] [x+5 for x in arr] |
这应该给您[6,7,8]的值是[1,2,3]列表中的值加上5。这种语法被称为列表理解(或映射)。它对列表中的所有元素应用相同的指令。就像这样:
1 2 | for x in arr: arr += 5 |
。
x是相同的变量,而不是y。它的工作原理与下面的代码相同
1 2 3 4 | newList = [] for x in temp1: if x not in s: newList.append(x) |
所以