【发布时间】:2022-08-03 22:52:32
【问题描述】:
我试图在 for 循环中使用海象来创建一个列表,
像这样的东西:
data = [l := line.strip().somefunc() for line in iterable_obj if(l[0] == \'sth\')]
但它返回一个空列表 有人可以提示我在这里做错了什么吗?
-
这里真的不需要使用海象运算符
我试图在 for 循环中使用海象来创建一个列表,
像这样的东西:
data = [l := line.strip().somefunc() for line in iterable_obj if(l[0] == \'sth\')]
但它返回一个空列表 有人可以提示我在这里做错了什么吗?
无需在这里使用海象,只需执行以下操作:
iterable_obj = [' Hello world sth', ' here', 'we', 'go']
data = [line.strip() for line in iterable_obj if ('sth' not in line)]
print(data)
输出:
['here', 'we', 'go']
【讨论】:
看来您需要在 if 中定义海象运算符,因为它是首先计算的:
[j for i in range(10) if (j := i) == 5]
请注意,在您的示例中,您必须在代码中的其他位置定义 l ,就好像如果我尝试在 if 语句中使用 j 并在左侧定义它时出现名称错误。
【讨论】: