Python如何用带条件的list comprehension给指定字符串加后缀
正确写法
你需要把条件判断放在列表推导式的取值表达式位置,使用Python三元运算符实现即可,完整代码如下:
str_list = ['a', 'b', 'c'] suffix = '_ok' new_str_list = [i + suffix if i == 'a' else i for i in str_list]
执行后new_str_list的结果就是你需要的['a_ok', 'b', 'c']。
原写法问题说明
你之前尝试把if i == 'a'写在for循环的后面,这种写法是列表推导式的「元素过滤规则」,只会保留符合条件的'a'元素,'b'、'c'都会被直接丢弃,不符合你的需求。
列表推导式的两种if用法区分
- 条件写在
for语句之前:属于取值逻辑的一部分,会对所有遍历到的元素执行判断,根据判断结果生成对应的值,不会过滤元素 - 条件写在
for语句之后:属于元素过滤规则,仅满足条件的元素才会进入最终的结果列表,不满足条件的元素会被直接丢弃
内容的提问来源于stack exchange,提问作者makpalan
相关产品推荐
相关产品推荐

