如何在Python二维元组中按相邻索引合并元组?
问题分析与解决
你原代码里的zip(coords[0::2], coords[1::2])会把coords[0::2](即((1,2), (5,6)))和coords[1::2](即((3,4), (7,8)))的对应元素两两配对,所以得到的是包含两个元组的元组,每个元组里又是一对原坐标元组,这就是你看到(((1, 2), (3, 4)), ((5, 6), (7, 8)))的原因。
要得到期望的把相邻两个坐标元组合并成一个的效果,你需要把每一对配对后的元组拼接起来,而不是直接转成tuple。
解法1:遍历拼接
直接按步长2遍历原元组,把每一组相邻的两个元组相加(元组相加等价于拼接):
coords = ((1, 2), (3, 4), (5, 6), (7, 8)) coords = tuple(coords[i] + coords[i+1] for i in range(0, len(coords), 2)) print(coords)
解法2:基于原zip逻辑修改
如果你想保留zip的用法,只需要对zip返回的每一对元组做拼接操作:
coords = ((1, 2), (3, 4), (5, 6), (7, 8)) coords = tuple(a + b for a, b in zip(coords[0::2], coords[1::2])) print(coords)
两种方法的输出都是:((1, 2, 3, 4), (5, 6, 7, 8)),符合你的期望。
内容的提问来源于stack exchange,提问作者core_not_dumped
相关产品推荐
相关产品推荐

