Python如何拆分方向坐标元组为两个子元组并保留元素原有顺序
Python按方位拆分坐标元组(保留原顺序)
需求场景
给定方位坐标元组:
coordinates = ('S', 'W', 'W', 'S', 'E', 'S', 'E', 'N', 'N')
需要拆分为两个独立子元组:
- 子元组1:收集所有
N(北)、S(南)方向值,元素顺序和原元组中出现顺序一致 - 子元组2:收集所有
E(东)、W(西)方向值,元素顺序和原元组中出现顺序一致
预期运行结果:
new_coordinates_one = ('S', 'S', 'S', 'N', 'N') new_coordinates_two = ('W', 'W', 'E', 'E')
实现代码
直接遍历原元组做条件筛选即可,代码简洁且执行效率高:
coordinates = ('S', 'W', 'W', 'S', 'E', 'S', 'E', 'N', 'N') # 筛选南北方向坐标 new_coordinates_one = tuple(elem for elem in coordinates if elem in {'N', 'S'}) # 筛选东西方向坐标 new_coordinates_two = tuple(elem for elem in coordinates if elem in {'E', 'W'})
逻辑说明
- 遍历过程严格按照原元组的元素顺序执行,筛选出的元素自然保留原有先后顺序,不需要额外做排序处理
- 用集合
{'N','S'}做成员判断,比列表判断的执行速度更快,数据量大的时候优势更明显 - 生成器表达式作为
tuple()的入参,不会生成冗余的中间列表,内存开销更小
内容的提问来源于stack exchange,提问作者robbo500
相关产品推荐
相关产品推荐

