[英]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.