Python - 混合字串列表中的數字排序


給定的問題陳述是在 Python 的幫助下對混合字串對列表執行數字排序操作。有時我們需要在 Python 中對混合資料型別列表進行排序,因此本文將有助於獲得給定資料集的所需排序形式。

理解問題

手頭的問題是在給定的字串列表中對混合對中的數字進行排序。因此,我們將得到一個列表,其中包含混合的資料型別,如字串和整數。因此,我們必須根據特定元素中的數字值對它們進行排序。例如,讓我們檢視下圖以更清楚地瞭解 -

為了解決上述問題,我們可以有多種選擇,因為每個問題都可以使用不同的方法來解決。在本文中,我們將討論大多數方法。

第一種方法 - 演算法

  • 步驟 1 - 在這種方法中,我們首先將混合字串數字對列表初始化為 mixed_list。

  • 步驟 2 - 然後定義函式為 sorting_mixed_pair,在這個函式中,我們將上面初始化的 mixed_list 作為輸入傳遞。

  • 步驟 3 - 在上述函式內部,我們將拆分列表的專案並將第二個專案轉換為整數。

  • 步驟 4 - 使用 sorted 方法,我們將使用上述函式作為鍵函式對給定列表進行排序,以顯示給定列表的排序順序。

  • 步驟 5 - 對混合對進行排序後,我們將使用 print 函式在控制檯上列印它。

示例

# Initialize the mixed pair string list
mixed_pair =  ['Daniel 4', 'Oliver 7', 'Jack 3', 'Henry 9', 'James 8', 'Benjamin 6', 'Jackson 5', 'Ryan 2']

# Define the function to get the mixed sorted list
def sorting_mixed_pair(mixed_pair):
   name, id = mixed_pair.split()
   return int(id)  

# Call the above created function
sorted_list = sorted(mixed_pair, key=sorting_mixed_pair)

# Print the sorted mixed pair string list
print("The numeric sorting mixed pair string list \n ", sorted_list)

輸出

The numeric sorting mixed pair string list
['Ryan 2', 'Jack 3', 'Daniel 4', 'Jackson 5', 'Benjamin 6', 'Oliver 7', 'James 8', 'Henry 9']

第二種方法 - 演算法

  • 步驟 1 - 將混合字串數字對列表初始化為 mixed_list。

  • 步驟 2 - 定義名為 sorting_mixed_pair 的函式,此函式將 mixed_list 作為輸入。

  • 步驟 3 - 在上述函式內部,lambda 函式將用於拆分給定的對並將第二個值轉換為整數。而且我們還將使用 sorted 方法對列表進行排序,但按相反順序。

  • 步驟 4 - 呼叫上面建立的函式並列印排序後的混合字串對列表。

示例

# Initialize the mixed pair string list
mixed_pair =  ['Daniel 4', 'Oliver 7', 'Jack 3', 'Henry 9', 'James 8', 'Benjamin 6', 'Jackson 5', 'Ryan 2']

# Define the function to get the mixed sorted list
def sorting_mixed_pair(mixed_pair):
   return sorted(mixed_pair, key = lambda item: int(item.split()[1]), reverse = True)
   
# Call the above function
sorted_list = sorting_mixed_pair(mixed_pair)

# Print the sorted mixed pair string list
print("The numeric sorting mixed pair string list \n ", sorted_list)

輸出

The numeric sorting mixed pair string list
['Henry 9', 'James 8', 'Oliver 7', 'Benjamin 6', 'Jackson 5', 'Daniel 4', 'Jack 3', 'Ryan 2']

複雜度

上述對混合字串對列表進行數字排序的方法的時間複雜度為 O(n log n),其中 n 是給定混合對列表中存在的專案數。由於我們在兩種方法中都使用了 sorted 方法,因此 sorted 方法的時間複雜度為 O(n log n)。

結論

正如我們使用了兩種方法來解決 Python 中混合字串對列表中數字排序的給定問題一樣。上述方法彼此非常相似,區別在於我們在第二種方法中使用了 lambda 函式。這就是為什麼兩種方法具有相似的時間複雜度的原因。

更新於: 2023-10-18

149 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告