如何将含字符串与数字的列表转换为含字符串与整数的列表?
混合字符串列表的类型转换方案
需求:将包含数字字符串与普通字符串的列表,在不改变元素顺序的前提下,把数字字符串转换为整数,普通字符串保持原有类型。例如输入:
['840', 'AB', '42', '200', 'BE', '54', '1000']
输出:[840, 'AB', 42, 200, 'BE', 54, 1000]
方法一:简洁列表推导式(适用于正整数字符串)
利用str.isdigit()判断是否为纯数字字符串,是则转为整数,否则保留原字符串:
original_list = ['840', 'AB', '42', '200', 'BE', '54', '1000'] converted_list = [int(item) if item.isdigit() else item for item in original_list] print(converted_list) # 输出:[840, 'AB', 42, 200, 'BE', 54, 1000]
方法二:异常处理(通用型,支持正负整数)
如果列表中存在带负号的数字字符串(如'-123'),isdigit()无法识别,此时用try-except捕获异常的方式更可靠:
original_list = ['-840', 'AB', '42', '-200', 'BE', '54', '1000'] converted_list = [] for item in original_list: try: converted_list.append(int(item)) except ValueError: converted_list.append(item) print(converted_list) # 输出:[-840, 'AB', 42, -200, 'BE', 54, 1000]
内容的提问来源于stack exchange,提问作者Jay Khangura
相关产品推荐
相关产品推荐

