簡體   English   中英

在列表和字符串中執行操作時分配的差異

[英]Difference of assignment when an operation is performed in lists and strings

所以我從Strings&Lists開始(主要是Basics),然后注意到了這一小問題:

String1 = "    Lot of white space  "
String1 = String1.strip()
print(String1)

奇跡般有效。

當我在LIST上嘗試相同的操作(不同的操作)時。 事情往南走:

list1 = [1,5,8,4,2]
list1 = list1.sort()
print(list1)

輸出-無

然而:

list1.sort()
print(list1)

提供所需的輸出。

為什么會這樣呢?

Python Docs

sort(*,key = None,reverse = None)此方法僅使用<項目之間的比較在適當的位置對列表進行排序 異常不會被抑制-如果任何比較操作失敗,則整個排序操作都會失敗(並且列表很可能會處於部分修改的狀態)。

sort()接受兩個只能通過關鍵字傳遞的參數(僅關鍵字參數):...當對大序列進行排序時, 此方法修改了序列以節省空間。 為了提醒用戶它是有副作用的,它不會返回排序后的序列(使用sorted()顯式請求一個新的排序后的列表實例)。

這意味着list1.sort()將對list1的元素進行適當排序,而不創建任何新對象或僅返回None列表。

>>> list1 = [1,5,8,4,2]
>>> is_None = list1.sort()
>>> is_None is None
True

list1.sort()相反, sorted() (內置方法)返回一個新的list1排序列表:

sorted(iterable[, key][, reverse])從iterable中的項目返回一個新的排序列表。

>>> list_sorted = sorted(list1)
>>> list_sorted
[1, 2, 4, 5, 8]
>>> type(list_sorted)
<type 'list'>

sort()對列表進行排序但返回None 第一個代碼段打印sort()的返回值。 第二個打印本身的排序列表。

list.sort是就地方法。 修改列表,而不是返回新列表。 它的返回值是None ,所以anything = some_list.sort() anything設置為None

從文檔:

當對大序列進行排序時,此方法會修改序列以節省空間。 為了提醒用戶它是有副作用的,它不會返回排序后的序列(使用sorted()顯式請求一個新的排序后的列表實例)。

如果您喜歡該語法(完全可以),請使用sorted(...)而不是list.sort

list1 = [1,5,8,4,2]
list1 = sorted(list1)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM