题目:
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]