如何使用zip撤销转置操作?处理转置后删除部分元组的还原需求
实现方法
你要的“撤销转置”本质还是做一次转置操作,直接对修改后的转置列表再次使用zip(*待转置对象)即可,具体实现如下:
# 注意不要用list作为变量名,会覆盖Python内置的list类型,这里改用original_list original_list = [(1, 2, 3, 4), (5, 6, 7, 8), (9, 10, 11, 12)] # 第一次转置 transpose = list(zip(*original_list)) print(transpose) # 输出:[(1, 5, 9), (2, 6, 10), (3, 7, 11), (4, 8, 12)] # 删除不需要的元组,比如示例里的第二个元组(索引为1) del transpose[1] print(transpose) # 输出:[(1, 5, 9), (3, 7, 11), (4, 8, 12)] # 再次转置即可得到目标结果 result = list(zip(*transpose)) print(result) # 输出:[(1, 3, 4), (5, 7, 8), (9, 11, 12)]
注意事项
- Python3中
zip默认返回迭代器,如果需要得到列表格式的结果,需要用list()做显式转换 - 该方法适用于所有等长元组构成的列表转置后修改、再反向转置的场景,无论删除了多少个转置后的元组,只要剩余元组长度一致,都可以直接用该方法实现。
内容的提问来源于stack exchange,提问作者Pavel
相关产品推荐
相关产品推荐

