首页 > 解决方案 > 有没有办法减少这种情况?

问题描述

我有这段代码,其中 st 是具有 x 和 y 参数的类的数组。我必须对他们的 x 或 y 进行排序。我怎样才能减少它,这样我就不必编写相同的代码 2 次(每种情况一个)?

def sort(st, coor):
    for i in range(len(st)):
        if coor == 'x':
            selected = st[i]
            j = i - 1
            while j >= 0 and st[j].x > selected.x:
                st[j + 1], st[j] = st[j], st[j + 1]
                j -= 1
            st[j + 1] = selected
            i += 1
        else:
            selected = st[i]
            j = i - 1
            while j >= 0 and st[j].y > selected.y:
                st[j + 1], st[j] = st[j], st[j + 1]
                j -= 1
            st[j + 1] = selected
            i += 1

标签: python

解决方案


为重复的代码提取方法。

https://refactoring.guru/extract-method

在那个新方法中,不同的部分是调用实例的xory属性,这可以通过调用getattr.


推荐阅读