首頁 > 軟體

python中sort()和sorted()的區別及用法範例

2022-06-23 14:01:08

本文主要講sort與sorted的主要區別,以便正確使用

一、

  • sort()只能用於列表;sorted()可以用於所有可迭代物件;

比如:

str_a = "blue"
print(sorted(str_a))
>>>['b', 'e', 'l', 'u']

二、

  • sort()對列表排序是進行原處排序,並不會返回新的列表;
  • sorted()排序後會返回一個新的列表;

比如:

對於sort()來說:
lis_a = [5,4,3,2,1]
lis_a.sort()
print(lis_a)
>>>[1, 2, 3, 4, 5]

對於sorted()來說:
lis_a = [5,4,3,2,1]
lis_b = sorted(lis_a)
print(lis_a)
print(lis_b)
>>>[5, 4, 3, 2, 1]
>>>[1, 2, 3, 4, 5]
  • 為什麼會有兩種方法,而不簡單的使用一種方法就行了呢?

下面是我的個人理解,可能並不全對,如有紕漏望指正。 我認為,因為列表是可變序列,所以可以原地修改,也即可以原地排序。但是對於字串等可迭代物件來說,是屬於不可變的,是不可以原處修改的。sort()方法屬於原地修改,所以可能只能用於列表,對於其他不可變的可迭代物件就創造了另一種sorted()方法。

  • 還有一點淺層的就是,sort()因為是原處排序,所以對原列表進行了修改。如果你不想改變原列表,那麼python提供了sorted()方法。
  • 可能有人不懂什麼是原處修改?如果理解就不必往下看。

比如:

可變序列:lis_a = ['a','b','c','d','e','f']
不可變序列:str_a = "abcdef"
lis_a[0] = 1
str_a[0] = 1      #序列均可進行下標索引操作
print(lis_a)
print(str_a)

那麼就會報錯

但是對於列表來說則是:

python中輸入字串轉列表的注意問題

python中使用input()來從鍵盤輸入字串 而這個操作稍微不注意 ==會出現一些問題,== 比如說將輸入的字串轉為列表:

a = input()
lis = list(a)
print(lis)

當你輸入一行字串以空格間隔時:

那麼你可能會想我把a中空格去掉就ok了,你可能會想到使用replace方法。==但是如果你輸入負數呢?==

所以面對這些問題,我們可以使用split()方法:

a = input().split()
lis = list(a)
print(lis)

當以空格間隔的時候split()括號內不需要放任何引數:

如果你用逗號間隔,那麼需要改為:input().split(",")

其實,一般當使用空格間隔的時候,才容易出現上述問題。

總結

到此這篇關於python中sort()和sorted()區別及用法的文章就介紹到這了,更多相關python sort()和sorted()區別內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com