如何将Python中嵌套if-else的字符分类代码转换为列表推导式
转换为列表推导式的实现
以下是完全保留原代码逻辑的列表推导式版本:
data = "abc@#123" t = tuple(data) flag = 0 # 用列表推导式完成分类 alpha = [i for i in t if type(i) == type(data) and i.isalpha()] digit = [int(i) for i in t if i.isnumeric() and type(int(i)) == type(flag)] spl_chr = [i for i in t if not (i.isnumeric() or (type(i) == type(data) and i.isalpha()))] dic = { "alphabets": alpha, "digits": digit, "symbols": spl_chr } print(t) print(dic)
逻辑对应说明
- 字母列表
alpha:完全对应原代码的elif分支,筛选类型为字符串且是字母的字符 - 数字列表
digit:对应原代码的if分支,先判断字符是数字,再验证转换为int后的类型与flag一致(原代码中的类型判断逻辑完整保留) - 符号列表
spl_chr:对应原代码的else分支,筛选既不是数字、也不符合字母判断条件的字符
运行结果与原代码完全一致,输出:
('a', 'b', 'c', '@', '#', '1', '2', '3') {'alphabets': ['a', 'b', 'c'], 'digits': [1, 2, 3], 'symbols': ['@', '#']}
内容的提问来源于stack exchange,提问作者Shivani Goyal
相关产品推荐
相关产品推荐

