Python:基于列表元素创建嵌套列表并按数字拆分
没问题,我来帮你搞定这个需求!其实思路挺直观的:我们只需要遍历字符串里的每个字符,同时维护两个列表——一个用来存最终结果的大列表,另一个用来临时存放当前正在收集的非数字字符子列表。
直接上代码,你可以直接运行试试:
input_str = 'a3buysi8byjs' final_result = [] current_group = [] for char in input_str: # 判断当前字符是不是数字 if not char.isdigit(): current_group.append(char) else: # 遇到数字时,把当前攒的子列表加入结果(避免空列表的情况) if current_group: final_result.append(current_group) current_group = [] # 循环结束后,别忘了把最后一组非数字字符加进去 if current_group: final_result.append(current_group) print(final_result) # 输出正好是你要的:[['a'], ['b','u','y','s','i'], ['b','y','j','s']]
关键点解释:
- 用
char.isdigit()快速判断字符是否为数字,这个方法对0-9的字符都有效 - 每次遇到数字时,先检查当前临时子列表有没有内容(比如连续出现数字的情况,就不会往结果里加空列表),然后把它加入大列表,再重置临时列表准备下一轮收集
- 循环结束后必须再检查一次临时列表,因为字符串最后一段没有数字触发添加操作,得手动把它加进结果里
边界情况测试:
如果遇到一些特殊输入,这个代码也能处理:
- 开头是数字:比如
'3abc5def',输出是[['a','b','c'], ['d','e','f']] - 结尾是数字:比如
'abc3def5',输出是[['a','b','c'], ['d','e','f']] - 没有数字:比如
'abcdef',输出是[['a','b','c','d','e','f']] - 连续数字:比如
'a123b',输出是[['a'], ['b']]
这样应该就能完美解决你的问题啦!
内容的提问来源于stack exchange,提问作者user8474919
相关产品推荐
相关产品推荐

