Python如何在for循环执行结束后返回整合后的汇总结果列表?
问题原因
你当前代码的核心问题是resLst的初始化位置写在了for循环内部,每次遍历列表元素时都会重置成空列表,同时每次循环结束就直接打印,最终才会输出多个独立的单元素列表。
修正方案
把resLst移到for循环外部初始化,所有元素的差异值计算完成后再统一打印即可,修改后的代码如下:
lst1 = ["31245", "12354", "15342", "12543"] str1 = "12345" resLst = [] # 列表初始化移到循环外部 for ele in lst1: count = 0 i = 0 while i < len(str1) : if ele[i] != str1[i] : count += 1 i += 1 resLst.append(count) print(resLst) # 所有元素计算完成后统一打印
运行后输出结果就是你需要的[3, 2, 2, 2]。
可选简化写法
你也可以用zip配对两个字符串的同位置字符,用更简洁的写法实现相同逻辑:
lst1 = ["31245", "12354", "15342", "12543"] str1 = "12345" resLst = [sum(a != b for a, b in zip(ele, str1)) for ele in lst1] print(resLst)
内容的提问来源于stack exchange,提问作者HuiEe Wong
相关产品推荐
相关产品推荐

