python - 如何将整数 (+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
解决方案
正如您所发现的,防护表达式[<expr> for x in p if <guard>]
会将列表过滤为仅满足防护表达式的列表。
当您希望处理每个值时,您不应该使用警卫,而是查看三元运算符(又名Conditional Expressions):
[x+1 if x != 3 else x for x in p]
推荐阅读
- python - 使用 pyinstaller 转换 python 脚本时出现问题。导入错误:库不兼容
- sql - Pandas 到 SQL 无法追加
- visual-studio - 当我构建我的分支时,AppCenter 向我显示一个错误(xamarin forms proj)
- r - 从其他所有列中减去 df 中的每个列
- django - Django 和 Nginx - 无效的 HTTP_HOST 标头
- c++ - 头文件中带有 enable_if 的模板的特化
- javascript - bootstrap.js 干扰单选按钮 D3 选择
- ios - 无法查看 Firebase Analytics 调试查看 React Native
- css - 如何自定义处于不确定状态的复选框的样式?
- java - 为什么在我的活动的 onCreate 中实例化工具栏时会出现问题?