You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中按条件将列表元素转换为1和0的实现方法

问题原因

你现有代码的问题在于把if条件放在了列表推导式的末尾,这个位置的if是过滤逻辑:只有符合条件的元素才会被保留生成新值,最终你得到的只会是长度为3的[1,1,1],自然不符合需求。

正确写法

把条件判断放到返回值的位置,用三元表达式实现每个元素的转换逻辑即可:

# 写法1:三元表达式实现
res = [1 if i in ['z','b','c'] else 0 for i in mylist]

如果需要匹配的元素数量较多,建议把匹配列表改成集合,in判断的执行效率会更高:

# 写法2:集合优化匹配效率
targets = {'z','b','c'}
res = [1 if i in targets else 0 for i in mylist]

如果你喜欢更简洁的写法,也可以直接利用Python布尔值和整数的对应关系(True对应1,False对应0),直接做类型转换:

res = [int(i in {'z','b','c'}) for i in mylist]

效果和上述写法完全一致。

执行结果

上述代码运行后得到的res就是你需要的[0, 0, 1, 0, 1, 1]。

内容的提问来源于stack exchange,提问作者PingPong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 12:09:01