[英]What is the difference between passing str.lower and str.upper as the key to list.sort?
[英]What does passing str.lower as the key to list.sort do?
def Sorting(lst):
lst.sort(key=str.lower)
lst.sort(key=len)
return lst
lst = ["Ronit", "Dan", "Yael"]
print Sorting(lst)
此代碼按字母順序然后按長度對列表進行排序。 我想知道為什么它會“降低”? 大寫字母不起作用嗎? 這是為了什么
它執行不區分大小寫的排序 。
讓我們稍微修改一下示例,以包含另一個條目“ dan”:
lst = ['Ronit', 'Dan', 'dan']
自然,您希望“丹”和“丹”一起出現。 但是,由於字符串排序的屬性,它們不是。 相反,普通的list.sort
調用將為您提供:
lst.sort()
print(lst)
['Dan', 'Ronit', 'dan']
另一方面,指定str.lower
給您以下內容:
lst.sort(key=str.lower)
print(lst)
['Dan', 'dan', 'Ronit']
在此,原始列表元素是根據其小寫字母等效項進行排序的。
現在,假設您了解key
作用(是,按長度排序),第二個帶有len
list.sort
調用現在應該是不言自明的。
要了解為什么在第二個之前需要第一個,請考慮另一個人為的示例:
lst = ['Ronit', 'Dan', 'ram', 'dan']
首先,只考慮key=len
:
lst.sort(key=len)
print(lst)
['Dan', 'ram', 'dan', 'Ronit']
那個“公羊”在這里看起來不合適。 這正是我們為什么要邁出第一步的原因。 現在,增加這一步使我們的輸出更加明智。
lst.sort(key=str.lower)
lst.sort(key=len)
print(lst)
['Dan', 'dan', 'ram', 'Ronit']
因此,總而言之,元素首先不區分大小寫地排序,然后按長度排序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.