Python:将列表中的数字拆分为单个数字的技术问题
解决数字列表拆分单个数字的问题
我明白你现在的困扰啦——想把列表里的每个数字拆成单个数字,但之前的方法都没达到预期,还搞不懂列表推导式对吧?我一步步给你讲清楚~
先说说你之前方法为啥没生效
- 用
list(str(number))的时候,你是把整个列表转成了字符串(比如str(number)会得到"[6, 18, 6, 4, 12, 18, 0, 18]"),所以拆分出来的会包含方括号、逗号、空格这些符号,自然不是你要的单个数字。 split()方法是针对字符串按指定分隔符拆分的,你直接用在列表上会报错;就算把列表转成字符串再用split(','),也只能得到每个数字的字符串形式(比如["6", " 18", " 6"...]),还是没拆分单个数字。
分步实现的方法(容易理解)
我们可以分两步走:先遍历原列表里的每个数字,再把每个数字拆成单个字符转成整数,最后收集所有结果。
代码示例:
numbers = [6, 18, 6, 4, 12, 18, 0, 18] result = [] # 遍历原列表中的每个数字 for num in numbers: # 把数字转成字符串,这样就能逐个访问每个数字字符了 num_str = str(num) # 遍历字符串里的每个字符,转成整数后加入结果列表 for char in num_str: result.append(int(char)) print(result) # 输出结果:[6, 1, 8, 6, 4, 1, 2, 1, 8, 0, 1, 8]
简化的列表推导式写法
上面的循环可以简化成一行列表推导式,其实就是把嵌套循环“压缩”了,我给你拆解一下:
numbers = [6, 18, 6, 4, 12, 18, 0, 18] result = [int(char) for num in numbers for char in str(num)]
拆解这个推导式的逻辑:
for num in numbers:先遍历原列表里的每一个数字for char in str(num):把当前数字转成字符串,遍历它的每一个字符int(char):把每个字符转回整数- 所有这些整数会自动组成一个新列表,就是你要的结果
这样是不是就明白列表推导式的逻辑啦?其实就是把嵌套循环的顺序反过来写,最后放要生成的元素就行。
内容的提问来源于stack exchange,提问作者Erich Purpur
相关产品推荐
相关产品推荐

