Python 基礎 2-3 列表的反轉與排序

瘋狂的大志GD發表於2019-08-31

引言

列表是按照特定格式排序而成的,有時候這種排序方式我們並不喜歡,我們希望它可以按照我們的方式來進行正序或者倒序排序,或其他的排序方式

反轉與排序

比如說我這裡有一組列表,裡面存放的全部都是數值,但非常亂,要你將它按從小到大或從大到小排序
列表可以按正序排序,也可以按倒序排序,排序分永久性的和臨時性的

列表反轉

列表反轉,使用 reverse() 方法將列表元素反過來排序
注意: 是將列表元素反過來排序,不是倒序排序
reverse() 方法對列表元素修改的排序永久性的,不過隨時可以再呼叫 reverse() 來恢復原來的排序

num = [ 23 , 12 , 53 , 6 , 18 , 68 , 55 , 96]
num.reverse()
print(num)  
# 執行結果:[96, 55, 68, 18, 6, 53, 12, 23]

從以上示例中看到,使用 reverse() 方法進行反轉排序僅僅是把列表元素頭尾互換反轉過來而已,並沒有進行倒序排序

列表排序

列表可對數字、英文字母進行排序

1. 正序排序,使用 sort() 方法進行正序排序,永久性排序,排序後不可恢復原來的排序
cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.sort()
print(cars)
# 執行結果:['audi', 'bmw', 'subaru', 'toyota']
2. 倒序排序,在 sort() 方法括號內傳入引數 reverse=True 達到倒序排序效果。永久性,排序後不再保持原來排序方式的
cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.sort( reverse=True )
print(cars)
# 執行結果:['toyota', 'subaru', 'bmw', 'audi']
3. 正序排序(臨時),使用 sorted() 對列表進行臨時排序(正序),不影響列表原來的排序方式
num = [ 23 , 12 , 53 , 6 , 18 , 68 , 55 , 96]

print(num)
# 執行結果:[23, 12, 53, 6, 18, 68, 55, 96]

print( sorted(num))
# 執行結果:[6, 12, 18, 23, 53, 55, 68, 96]

print(num)
# 執行結果:[23, 12, 53, 6, 18, 68, 55, 96]

從以上列印示例中看到,使用 sorted() 對列表進行臨時正序排序,再次對列表進行列印時,還是原來的排序順序

4. 倒序排序(臨時),在 sorted() 方法傳入 reverse=True 達到倒序排序效果,不影響列表原來的排序方式
num = [ 23 , 12 , 53 , 6 , 18 , 68 , 55 , 96]

print(num)
# 執行結果:[23, 12, 53, 6, 18, 68, 55, 96]

print( sorted(num,reverse=True))
# 執行結果:[96, 68, 55, 53, 23, 18, 12, 6]

print(num)
# 執行結果:[23, 12, 53, 6, 18, 68, 55, 96]

從以上列印示例中看到,通過在 sorted() 內傳入 reverse=True 引數,列表進行了臨時倒序排序
再次對列表進行列印時,還是原來的排序順序

其他

使用 range() 函式生成一些列數字

只需要在括號內傳入開始值及結束值就行了,這個也遵循左閉右開原則
例如以下這個示例,列印 05 的數字,實際只列印 04

for num in range(0,5):
    print(num,end='\t')
# 執行結果:0    1   2   3   4

如果想輸入 05 則需要在這裡輸入

建立數字列表

使用 list() 函式將 range() 生成的一系列數字轉為列表

list_num = list(range(0,5))
print(list_num)
# 執行結果:[0, 1, 2, 3, 4]

range() 還可以指定步長,事實上 range() 函式可以傳入三個引數,起始值、結束值、步長

num_list = []
for num in range(0,20,2):
    num_list.append(num)
print(num_list)
# 執行結果:[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

像以上示例中,函式 range()0 開始,不斷加2,直到達到或超過20


大志 Python

敏而好學,不恥下問

相關文章