Python 按其浮点元素对元组进行排序
本文将演示如何编写一个Python程序来根据其浮点元素对元组进行排序。我们将讨论使用内置的sorted()函数进行排序和使用就地排序方法进行排序。
输入输出情况
以下是一个输入和输出情况,确定按其浮点元素对元组进行排序:
情况-1
Input:
tuple = [(‘Dengu’, ’54.865’), (‘Malaria’, ‘345.743’), (‘Corona’, ‘456.864’), (‘Typhoid’, ‘35.285’), (‘Jaundice’, ’83.367’)]
Output:
[(‘Corona’, ‘456.864’), (‘Malaria’, ‘345.743’), (‘Jaundice’, ’83.367’), (‘Dengu’, ’54.865’), (‘Typhoid’, ‘35.285’)]
在上述情况中,我们可以看到元组已经根据其浮点数元素以降序排序。
情境-2
Input:
tuple = [(‘638’, ’54.865’), (‘932’, ‘345.743’), (‘256’, ‘456.864’), (‘843’, ‘35.285’), (‘246’, ’83.367’)]
Output:
[(‘256’, ‘456.864’), (‘932’, ‘345.743’), (‘246’, ’83.367’), (‘638’, ’54.865’), (‘843’, ‘35.285’)]
在上述情况中,我们可以看到元组按其浮点元素的降序排序,而不是按其整数值排序。
使用sorted()方法
不改变初始序列的情况下,sorted()方法对元组进行排序,始终返回一个按排序顺序排列的元组。在这里,我们尝试使用三个参数,即可迭代对象、键(可选)和反向(可选),其中两个是可选的。
步骤
以下算法描述了使用sorted()方法按其浮点元素对元组进行排序的方法:
- 提供一个列表
-
使用sorted()方法进行排序
-
任何需要排序的可迭代对象,包括集合(字典、集合、frozenset)、序列(列表、元组、字符串)或其他类型
-
使用可选的键函数作为排序比较的依据
-
如果将可选的Reverse设置为true,则可迭代对象将按逆序(降序)排序。默认情况下,设置为false。
示例
以下是使用sorted()方法按其浮点元素对元组进行排序的Python代码示例:
def sort_tuple(X):
return(sorted(X, key = lambda n: float(n[1]), reverse = True))
# The driver Code
X = [('Dengu', '54.865'), ('Malari', '345.743'), ('Corona', '456.864'), ('Typhoi', '35.285'), ('Jaundice', '83.367')]
print("Sorting of Tuples Using Its Float Element ::",sort_tuple(X))
输出结果如下:
输出
以下是上述代码的输出结果:
Sorting of Tuples Using Its Float Element :: [('Corona', '456.864'), ('Malari', '345.743'), ('Jaundice', '83.367'), ('Dengu', '54.865'), ('Typhoi', '35.285')]
使用sort()方法
在排序方法中,元组的实际内容会发生改变,而在前一种方法中,原始元组的内容保持不变。
步骤
以下算法描述了使用sort()方法按浮点元素对元组进行排序的方法:
- 创建一个新的元组列表。
- 定义排序函数(用于排序元组)。
- 将第二个元素设为排序键。
- 使用lambda子列表。
- 输出结果。
示例
在这段代码中,使用这种排序方法会改变元组的实际内容。sort()函数使用默认的比较运算符按升序或降序对列表的元素进行排序。使用key参数指定要用于比较的函数名称,而不是默认的运算符。
def sort(tuple):
# sorting in descending order by setting reverse as true using float elements
tuple.sort(key = lambda x: float(x[1]), reverse = True)
print(tuple)
# The driver Code
tuple = [('638', '54.865'), ('932', '345.743'), ('256', '456.864'), ('843', '35.285'), ('246', '83.367')]
sort(tuple)
输出
以下是上面代码的输出−
[('256', '456.864'), ('932', '345.743'), ('246', '83.367'), ('638', '54.865'), ('843', '35.285')]
使用二分搜索操作
在我们的代码中,我们有一个元组列表,我们必须使用元组的第二个成员(即排序索引)进行排序。我们将有效地使用一种排序方法,只是我们将使用元组的第二个元素而不是列表的第一个值。
步骤
以下算法描述了使用二分搜索操作按照浮点数元素的排序索引对元组进行排序的方法:
- 初始化列表。
- 打印初始列表。
- 定义元组列表的长度。
- 使用二分搜索函数进行排序。
- 打印结果。
示例
该程序使用二分排序方法执行排序。列表将使用由元组的第二个项确定的索引进行排序。
# Create a new tuple
tuple_list = [('638', 54.865), ('932', 345.743), ('256', 456.864), ('843', 35.285), ('246', 83.367)]
print("The orignal list is : ", str(tuple_list))
# Sort the list of tuples using the second item
Len = len(tuple_list)
for i in range(0, Len):
for j in range(0, (Len - i - 1)):
if(tuple_list[j][1] < tuple_list[j+1][1]):
temp = tuple_list[j]
tuple_list[j] = tuple_list[j+1]
tuple_list[j+1] = temp
print("The sorted list is : ", str(tuple_list))
输出
以下是上述代码的输出结果 –
The orignal list is : [('638', 54.865), ('932', 345.743), ('256', 456.864), ('843', 35.285), ('246', 83.367)]
The sorted list is : [('256', 456.864), ('932', 345.743), ('246', 83.367), ('638', 54.865), ('843', 35.285)]