如何在Python中将逗号分隔的数字字符串转换为整数列表?
解决逗号分隔数字字符串转整数列表的问题
嘿,我完全懂你碰到的麻烦——直接用list()处理字符串的话,它会把每个字符都拆成列表元素,所以才会得到一堆零散的数字字符和逗号,根本不是想要的整数列表。别担心,有几个简单的方法能搞定这个需求:
方法一:列表推导式(直观易懂)
首先用split(',')把原字符串按逗号分割成包含数字字符串的列表,再通过列表推导式把每个字符串转换成整数:
# 原字符串 num_str = '128,120,119,118,119,118,120,116,116,120,128,121' # 第一步:按逗号分割成字符串列表 str_list = num_str.split(',') # 第二步:逐个转成整数 int_list = [int(num) for num in str_list] # 输出结果:[128, 120, 119, 118, 119, 118, 120, 116, 116, 120, 128, 121]
也可以把两步合并成一行,更简洁:
int_list = [int(num) for num in '128,120,119,118,119,118,120,116,116,120,128,121'.split(',')]
方法二:使用map()函数(更简洁)
map()函数可以把一个函数应用到可迭代对象的每个元素上,这里我们用int()函数处理分割后的每个字符串,最后转成列表:
num_str = '128,120,119,118,119,118,120,116,116,120,128,121' int_list = list(map(int, num_str.split(',')))
这个方法和上面的效果完全一样,代码更短,适合喜欢简洁写法的场景。
为什么之前的list()不行?
当你直接对字符串用list()时,Python会迭代字符串的每一个字符,不管是数字还是逗号,都会被拆成单独的列表元素,所以才会得到['1', '2', '8', ',', ...]这种不符合预期的结果。正确的思路是先把完整的数字字符串从原串中拆分出来,再转换类型。
内容的提问来源于stack exchange,提问作者陳俊良
相关产品推荐
相关产品推荐

