Ora*_*Tux 90 python if-statement list-comprehension
我想比较2个iterables并打印出两个iterables中出现的项目.
>>> a = ('q', 'r')
>>> b = ('q')
# Iterate over a. If y not in b, print y.
# I want to see ['r'] printed.
>>> print([ y if y not in b for y in a])
^
Run Code Online (Sandbox Code Playgroud)
但是它给了我一个无效的语法错误^.这个lamba函数有什么问题?
Vol*_*ity 164
你的订单错了.在if应后的for(除非它是在if-else三元运算符)
[y for y in a if y not in b]
Run Code Online (Sandbox Code Playgroud)
但这可行:
[y if y not in b else other_value for y in a]
Run Code Online (Sandbox Code Playgroud)
Mar*_*ers 37
你把它if放在最后:
[y for y in a if y not in b]
Run Code Online (Sandbox Code Playgroud)
列表推导的编写顺序与它们嵌套的完全指定的对应项相同,基本上上述语句转换为:
outputlist = []
for y in a:
if y not in b:
outputlist.append(y)
Run Code Online (Sandbox Code Playgroud)
你的版本尝试这样做:
outputlist = []
if y not in b:
for y in a:
outputlist.append(y)
Run Code Online (Sandbox Code Playgroud)
但列表理解必须从至少一个外循环开始.
清单理解公式:
[<value_when_condition_true> if <condition> else <value_when_condition_false> for value in list_name]
Run Code Online (Sandbox Code Playgroud)
因此,您可以这样做:
[y for y in a if y not in b]
Run Code Online (Sandbox Code Playgroud)
仅用于演示目的:[如果y不在b中,则为y,对于a中的y为假]
| 归档时间: |
|
| 查看次数: |
126823 次 |
| 最近记录: |