如何从文件名列表中提取dog对应1、cat对应0的0/1分类标签?
优化实现方案
1. 最推荐的Pythonic写法:列表推导式
你的原有逻辑是正确的,用列表推导式可以简化代码,同时保留可读性,另外把无意义的变量名i改成语义化的filename,更便于后续维护:
a = ['dog7', 'cat5', 'dog77', 'dog44', 'cat5'] res = [1 if 'dog' in filename else 0 for filename in a]
运行后res的结果就是你需要的[1, 0, 1, 1, 0]。
2. 更严谨的校验版本
如果你的业务场景要求文件名只能包含dog或cat两类,建议增加异常校验,避免不合法的文件名被错误归类到0的分类里:
res = [] a = ['dog7', 'cat5', 'dog77', 'dog44', 'cat5'] for filename in a: if 'dog' in filename: res.append(1) elif 'cat' in filename: res.append(0) else: raise ValueError(f"非法文件名:{filename},仅允许包含dog或cat的文件名")
可选写法:map+lambda(可读性略低于列表推导式,适合简单的单行转换场景)
res = list(map(lambda x: 1 if 'dog' in x else 0, a))
内容的提问来源于stack exchange,提问作者user3668129
相关产品推荐
相关产品推荐

