Python遍历多个列表拆分字符串时原列表未修改如何解决?
问题原因
你的推测完全正确:for循环中的lst是临时变量,直接执行lst = 新列表的赋值操作时,只是让lst指向了新创建的列表对象,不会修改你传入的原始列表实例,因此外部的list_01、list_02等变量不会同步改动。
修复方案
用切片赋值的方式替换原列表的内容,该操作会直接修改原列表对象本身,不会改变变量的指向,改动可以同步到外部原始变量。
同时可以优化拆分逻辑:字符串本身是可迭代对象,不需要判断长度,直接迭代拆分即可。
修复后的代码示例:
for lst in [list_01, list_02, ..., list_N]: tmp = [] for s in lst: # 长度为1的字符串迭代后只会取到本身,无需单独判断 tmp.extend(s) # 切片赋值修改原列表 lst[:] = tmp
也可以用更简洁的列表推导式实现:
for lst in [list_01, list_02, ..., list_N]: lst[:] = [char for s in lst for char in s]
内容的提问来源于stack exchange,提问作者Carlo
相关产品推荐
相关产品推荐

