Python算法題----逆序列表

    有這樣一個列表[1, 2, 3, 4, 5, 6, 7, 8, 9]編程實現該列表逆序排列,將其變爲[9, 8, 7, 6, 5, 4, 3, 2, 1] 。python

    題目有了,看看怎麼答,逆序排列,只須要將第一個和倒數第一個,第二個和倒數第二個,一直到中間那個位置的數字依次進行交換便可。編程

    假設列表爲data, 列表長度爲len(data) ide

    [1, 2, 3, 4, 5, 6, 7, 8, 9]單元測試

     0  1  2  3  4  5  6  7  8測試

    從上圖的列表和其下標可得出以下結論:it

    列表第1個元素下標爲0 最後一個元素爲len(data) - 0class

    列表第2個元素下標爲1 最後一個元素爲len(data) - 1test

    列表第3個元素下標爲2 最後一個元素爲len(data) - 2import

    則咱們遍歷列表的時候假設循環變量爲i, 上面的規律可表示爲len(data) - 1 - i 變量


如今開始寫代碼實現:

def inverse(data=None):
    if not data or not isinstance(data, list) or len(data) < 1:
        return
    n = len(data)
    for i, v in enumerate(data[0:int(n/2)]):
        if v < data[n-1-i]:
            data[i], data[n-1-i] = data[n-1-i], data[i]    # 交換元素
    return data


單元測試

測試很重要,尤爲是實現複雜功能的代碼,爲了不每次改動都在代碼中插一堆print,最好寫測試代碼,一次投入,回報長遠。哈哈!

import unittest
class TestInverseMethods(unittest.TestCase):
    def test_inverse(self):
        data = [1, 2, 3, 4, 5, 6]
        result = [6, 5, 4, 3, 2, 1]
        self.assertEqual(inverse(data), result)
if __name__ == '__main__':
    unittest.main()


.

----------------------------------------------------------------------

Ran 1 test in 0.002s


OK


看到如上輸出,則表示測試經過

相關文章
相關標籤/搜索