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 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告