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 函式。這就是為什麼兩種方法具有相似的時間複雜度的原因。