首页 > 解决方案 > 如何将整数 (+1) 添加到列表的项目中,除非它们在 Python 中具有特定值

问题描述

嗨,我真的是编程新手。我想为列表中的每个项目添加 1 (+1),但值 = 3 的项目除外。我尝试使用 for 循环:

p = [1,2,3]
p= [x+1 for x in p if x != 3]
print (p)
#[2,3]

但是输出是 [2,3],所以它在第一个项目上加 1,但不输出最后一个。这不是我想要的,我不希望它显示所有 3 项,但不要向 = 3 的人添加任何内容。

然后我尝试了这个但仍然无法正常工作:

p = [1,2,3]
p= [x+1 for x!=3 in p]
print (p)
#SyntaxError: invalid syntax

标签: pythonlistadd

解决方案


正如您所发现的,防护表达式[<expr> for x in p if <guard>]会将列表过滤为仅满足防护表达式的列表。
当您希望处理每个值时,您不应该使用警卫,而是查看三元运算符(又名Conditional Expressions):

[x+1 if x != 3 else x for x in p]

推荐阅读