题目:
Python练习题问题如下:
已知数组python列表a = [99,66,25,10,3],并且是已经排序过的。现在要求,将a数组的元素逆向排序。
分析:
- sorted()
- reversed()这个实验不能用,不清楚是为啥。
-
解题
使用sorted()
a = [99, 66, 25, 10, 3]a = sorted(a)print(a)=========================== RESTART: E:/practice/1.py ==========================[3, 10, 25, 66, 99]
使用sort()
a = [99, 66, 25, 10, 3]a.sort()print(a)=========================== RESTART: E:/practice/1.py ==========================[3, 10, 25, 66, 99]
a = [99, 66, 25, 10, 3]a = a.sort()print(a)=========================== RESTART: E:/practice/1.py ==========================None
- 使用reversed()
a = [99, 66, 25, 10, 3]a = reversed(a)print(a)=========================== RESTART: E:/practice/1.py ==========================<list_reverseiterator object at 0x000001959CBA1748>
- 使用reverse()
a = [99, 66, 25, 10, 3]a = a.reverse()print(a)=========================== RESTART: E:/practice/1.py ==========================None
a = [99, 66, 25, 10, 3]a.reverse()print(a)=========================== RESTART: E:/practice/1.py ==========================[3, 10, 25, 66, 99]
- 使用函数值对调
a = [99, 66, 25, 10, 3]for i in range(len(a)//2):a[i], a[len(a)-1-i] = a[len(a)-1-i], a[i]print(a)=========================== RESTART: E:/practice/1.py ==========================[3, 10, 25, 66, 99]
注意:
- 列表中使用reverse()函数不要写成 a = a.reverse(),会导致列表清空,返回值为None。此点在reverse()和sort()函数中均需注意。
a.reverse()和a.sort()函数均是原位修改列表,而sorted()则是新建一个列表,如果需要使用原变量表示,需重新对原变量进行赋值。
疑问:
-
解答:
(20200221)reversed()函数返回一个迭代器,需要使用list()函数将返回值呈现。
a = [99, 66, 25, 10, 3]print(reversed(a))list(reversed(a))print(list(reversed(a)))=========================== RESTART: E:/practice/2.py ==========================<list_reverseiterator object at 0x000001DBECA71788>[3, 10, 25, 66, 99]
