Python - 混合对字符串列表中的数字排序
给定的问题陈述是在 Python 的帮助下在混合对字符串列表中执行数字排序操作。有时我们需要在 Python 中对混合数据类型列表进行排序,因此本文将有助于获取给定数据集所需的排序形式。
理解问题
手头的问题是执行给定字符串列表中混合对的数字排序。因此,我们将得到一个列表,其中包含字符串和整数等混合数据类型。因此,我们必须根据特定元素中的数值对它们进行排序。例如,让我们看下面的图片来更清楚地理解 -
为了解决上述问题,我们可以有多种选择,因为每个问题都可以用不同的方法解决。在本文中,我们将讨论大多数方法。
第一种方法 - 算法
步骤 1 - 在这种方法中,我们首先将混合对字符串数字列表初始化为mixed_list。
步骤 2 - 然后将函数定义为sorting_mixed_pair,在此函数中,我们将传递上面初始化的mixed_list作为输入。
步骤 3 - 在上述函数中,我们将拆分列表的项目并将第二项转换为整数。
步骤 4 - 使用sorted方法,我们将使用上述函数作为关键函数对给定列表进行排序,以显示给定列表对的排序顺序。
步骤 5 - 对混合对进行排序后,我们将使用print将其打印在控制台上函数。
示例
# 初始化混合对字符串列表 mixed_pair = ['Daniel 4', 'Oliver 7', 'Jack 3', 'Henry 9', 'James 8', 'Benjamin 6', 'Jackson 5', 'Ryan 2'] # 定义函数以获取混合排序列表 def sorting_mixed_pair(mixed_pair): name, id = mixed_pair.split() return int(id) # 调用上面创建的函数 sorted_list = sorted(mixed_pair, key=sorting_mixed_pair) # 打印排序后的混合对字符串列表 print("数字排序混合对字符串列表 \n ", sorted_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 - 调用上面创建的函数并打印排序后的混合对字符串列表。
示例
# 初始化混合对字符串列表 mixed_pair = ['Daniel 4', 'Oliver 7', 'Jack 3', 'Henry 9', 'James 8', 'Benjamin 6', 'Jackson 5', 'Ryan 2'] # 定义函数以获取混合排序列表 def sorting_mixed_pair(mixed_pair): return sorted(mixed_pair, key = lambda item: int(item.split()[1]), reverse = True) #调用上述函数 sorted_list = sorting_mixed_pair(mixed_pair) # 打印已排序的混合对字符串列表 print("数字排序混合对字符串列表 \n ", sorted_list)
输出
数字排序混合对字符串列表 ['Henry 9', 'James 8', 'Oliver 7', 'Benjamin 6', 'Jackson 5', 'Daniel 4', 'Jack 3', 'Ryan 2']
复杂度
上述方法对混合对字符串列表进行数字排序的时间复杂度为 O(n log n),其中 n 是给定混合对列表中存在的项目数。由于我们在两种方法中都使用了排序方法,因此排序方法的时间复杂度为 O(n log n)。
结论
由于我们使用了两种方法来解决 Python 中混合对字符串列表中的数字排序问题。上述方法彼此非常相似,不同之处在于我们在第二种方法中使用了 lambda 函数。这就是为什么这两种方法具有相似的时间复杂度。