Python列表理解时如何在条件语句中什么都不做?

Qua*_*ati -1 python list-comprehension filter conditional-statements python-3.x

这是事情:

lst = [1, 2, 3]
i = [x if x == 2 else "I don't need that!" for x in lst]
print(i)
Run Code Online (Sandbox Code Playgroud)

输出:

["I don't need this item!", 2, "I don't need this item!"]
Run Code Online (Sandbox Code Playgroud)

正如您在输出中看到的,我有我不想拥有的第一个和最后一个项目。

我尝试了各种方法,例如删除else语句(这是不可能的),替换0pass语句(它也不起作用)。

甚至有可能listlist理解时使用条件获取刚需要的项目吗?还是只有filter功能才有可能?

需要的输出:

[2]
Run Code Online (Sandbox Code Playgroud)

t3m*_*3m2 5

尝试这个:

lst = [1, 2, 3]
i = [x for x in lst if x == 2]
print(i)

Run Code Online (Sandbox Code Playgroud)

输出:

[2]
Run Code Online (Sandbox Code Playgroud)

你没有正确使用列表理解,if语句应该在for循环之后。有关更多信息,请参阅Python 中的列表推导式或其文档

改题前的答案是这样的:

lst = [1, 2, 3]
i = [x if x == 2 else "I don't need this item!" for x in lst]
print(i)
Run Code Online (Sandbox Code Playgroud)

输出:

["I don't need this item!", 2, "I don't need this item!"]
Run Code Online (Sandbox Code Playgroud)

字符串内的引号,解释。