Answers:
您下的订单错了。在if
应后的for
(除非它是在if-else
三元运算符)
[y for y in a if y not in b]
但是,这将起作用:
[y if y not in b else other_value for y in a]
您将放到if
最后:
[y for y in a if y not in b]
列表解析的编写顺序与其嵌套的完整指定副本的编写顺序相同,实质上,以上声明翻译为:
outputlist = []
for y in a:
if y not in b:
outputlist.append(y)
您的版本尝试这样做:
outputlist = []
if y not in b:
for y in a:
outputlist.append(y)
但是列表理解必须至少从一个外部循环开始。
清单理解公式:
[<value_when_condition_true> if <condition> else <value_when_condition_false> for value in list_name]
因此您可以这样做:
[y for y in a if y not in b]
仅用于演示目的:[如果y不在b中,则为y;对于a中的y,为False]
else
在列表理解中放一个,至少不能放一个。不要将列表理解(过滤)与条件表达式(必须具有一个值,使else表达式成为必需的)混淆。
else
如代码所示,用于列表理解。
我针对我的情况研究并尝试了上述提及的列表理解建议,如下所述,但是它没有用。我在这里做错了什么?
sent_splt=[['good', 'case,', 'excellent', 'value.'], ['great', 'for', 'the', 'jawbone.'],['tied', 'to', 'charger', 'for', 'conversations', 'lasting', 'more', 'than', '45', 'minutes.major', 'problems!!']]
stop_set = ['the', 'a', 'an', 'i', 'he', 'she', 'they', 'to', 'of', 'it', 'from']
x=[a for a in sent_splt if a not in stop_set]
print(x)
它不是在过滤单词。
b = ('q')
不会创建元组。具有一个元素的元组需要一个显式的,
,即b = ('q',)