题目:

Python练习题问题如下:
已知数组python列表a = [99,66,25,10,3],并且是已经排序过的。现在要求,将a数组的元素逆向排序。
分析:

  1. sorted()
  2. reversed()这个实验不能用,不清楚是为啥。
  3. 使用第一个与最后一个数对调

    解题

  4. 使用sorted()

    1. a = [99, 66, 25, 10, 3]
    2. a = sorted(a)
    3. print(a)
    4. =========================== RESTART: E:/practice/1.py ==========================
    5. [3, 10, 25, 66, 99]
  5. 使用sort()

  1. a = [99, 66, 25, 10, 3]
  2. a.sort()
  3. print(a)
  4. =========================== RESTART: E:/practice/1.py ==========================
  5. [3, 10, 25, 66, 99]
  1. a = [99, 66, 25, 10, 3]
  2. a = a.sort()
  3. print(a)
  4. =========================== RESTART: E:/practice/1.py ==========================
  5. None
  1. 使用reversed()
  1. a = [99, 66, 25, 10, 3]
  2. a = reversed(a)
  3. print(a)
  4. =========================== RESTART: E:/practice/1.py ==========================
  5. <list_reverseiterator object at 0x000001959CBA1748>
  1. 使用reverse()
  1. a = [99, 66, 25, 10, 3]
  2. a = a.reverse()
  3. print(a)
  4. =========================== RESTART: E:/practice/1.py ==========================
  5. None
  1. a = [99, 66, 25, 10, 3]
  2. a.reverse()
  3. print(a)
  4. =========================== RESTART: E:/practice/1.py ==========================
  5. [3, 10, 25, 66, 99]
  1. 使用函数值对调
  1. a = [99, 66, 25, 10, 3]
  2. for i in range(len(a)//2):
  3. a[i], a[len(a)-1-i] = a[len(a)-1-i], a[i]
  4. print(a)
  5. =========================== RESTART: E:/practice/1.py ==========================
  6. [3, 10, 25, 66, 99]

注意:

  1. 列表中使用reverse()函数不要写成 a = a.reverse(),会导致列表清空,返回值为None。此点在reverse()和sort()函数中均需注意。
  2. a.reverse()和a.sort()函数均是原位修改列表,而sorted()则是新建一个列表,如果需要使用原变量表示,需重新对原变量进行赋值。

    疑问:

  3. 使用reversed()函数不清楚为啥会返回

    解答:

    (20200221)reversed()函数返回一个迭代器,需要使用list()函数将返回值呈现。

  1. a = [99, 66, 25, 10, 3]
  2. print(reversed(a))
  3. list(reversed(a))
  4. print(list(reversed(a)))
  5. =========================== RESTART: E:/practice/2.py ==========================
  6. <list_reverseiterator object at 0x000001DBECA71788>
  7. [3, 10, 25, 66, 99]