日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

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

作者:興濤 ? 更新時間: 2022-08-15 編程語言

本文主要講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(",")

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

總結

原文鏈接:https://juejin.cn/post/7112029773886881805

欄目分類
最近更新