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 函数。这就是为什么两种方法具有相似的时间复杂度的原因。