Python中迭代比较列表并返回嵌套差异索引列表的问题
问题解决:按子列表分组返回差异元素的索引
你现在的问题是代码输出了扁平的索引列表,但需要按原嵌套列表的子列表分组展示差异索引对吧?其实问题出在你直接把所有差异索引都追加到同一个differences列表里了,没有按子列表做分组。
只需要做个小调整:每次遍历一个子列表的时候,先创建一个临时列表来存储这个子列表的差异索引,等这个子列表的所有元素对比完,再把临时列表加到最终的differences里就行。
修改后的代码如下:
differences = [] my_list = [['a', 'b', 'c', 'd'], ['a', 'e', 'f', 'd'], ['a', 'b', 'c', 'g'], ['d', 'e', 'f', 'd']] main_list = ["a", "b", "f", "d"] # 遍历每个子列表 for sub_list in my_list: # 为当前子列表创建临时存储差异索引的列表 sub_diff = [] # 对比当前子列表和基准列表的元素,注意索引从1开始 for index, (item_main, item_sub) in enumerate(zip(main_list, sub_list), start=1): if item_main != item_sub: sub_diff.append(index) # 把当前子列表的差异索引列表加到最终结果里 differences.append(sub_diff) print(differences)
运行这段代码后,输出就是你期望的:[[3], [2], [3, 4], [1, 2]]
另外我把循环改成了直接遍历子列表(for sub_list in my_list),比用索引遍历更直观,当然你要是习惯原来的range(len(my_list))写法,也可以改成sub_list = my_list[i],效果是完全一样的。
内容的提问来源于stack exchange,提问作者labgeek
相关产品推荐
相关产品推荐

