有這樣一個列表[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
看到如上輸出,則表示測試經過