Python – 列表中最小数对和
最小数对和的定义是从给定数字列表中取出的两个数字的最小可能和。当最小化两个元素的总和很重要时,例如减少某个操作所需的成本、距离或时间,它可以用来解决挑战。在Python中,我们有一些内置函数,如float()、sort()、combination()和range(),将用于查找列表中的最小数对和。
语法
以下语法用于示例中:
float('inf')
float()是Python中的内置方法,它接受参数来设置较大的无穷大值。
sort()
sort()是Python中的内置方法,它默认按升序对数字进行排序。
combinations()
这是Python中的内置方法,它遵循Python的itertools模块,该模块收集元素列表的顺序,但顺序无关紧要。它有助于设置对的可能性。
len()
len()是Python中的内置方法,它返回对象的长度。
使用嵌套for循环
该程序使用递归函数,其中循环迭代遍历列表以查找最小数对和。
示例
在以下示例中,程序从名为min_pair的函数开始,该函数接受参数nums以接收输入列表的值。在这个函数中,初始化两个变量min_sum和min_pair。min_sum使用float('inf')初始化为正无穷大,min_pair初始化为空元组。接下来,两个嵌套循环迭代列表中的所有整数对。然后使用if语句,如果数对和小于min_sum,则根据新的数对和调整min_sum,并修改min_pair以表示当前的数字对。检查完所有配对后,函数将返回最小和和最小数对。接下来在变量num中创建输入列表整数。然后在两个变量r_sum和res_pair中使用函数调用。最后,我们使用相同的变量作为print函数的参数来获取结果。
def min_pair(nums):
min_sum = float('inf')
min_pair = ()
for i in range(len(nums)):
for j in range(i + 1, len(nums)):
pair_sum = nums[i] + nums[j]
if pair_sum < min_sum:
min_sum = pair_sum
min_pair = (nums[i], nums[j])
return min_sum, min_pair
# create the list
num = [40, 21, 91, 50, 11]
r_sum, res_pair = min_pair(num)
print("Minimum pair sum of the list:", r_sum)
print("Pair is:", res_pair)
输出
Minimum pair sum of the list: 32 Pair is: (21, 11)
使用排序
该程序使用sort()函数并将sum应用于列表索引元素,这将有助于查找最小数对和。
示例
在以下示例中,程序从min_pair开始,它将数字列表作为参数。在函数中,使用内置函数sort对数字列表进行排序。将排序列表的前两个元素相加以确定最小和。将排序列表的前两个元素转换为元组以提供最小数对。函数返回最小数对和最小和。接下来,创建列表并将其存储在变量num中。然后在变量r_sum和r_pair中调用名为min_pair的函数。接下来在print函数中使用相同的变量来获取结果。
def min_pair(nums):
nums.sort()
min_sum = nums[0] + nums[1]
min_pair = (nums[0], nums[1])
return min_sum, min_pair
# create the list
num = [11, 10, 9, 5, 1]
r_sum, res_pair = min_pair(num)
print("Minimum pair sum from the list:", r_sum)
print("Pair is:", res_pair)
输出
Minimum pair sum from the list: 6 Pair is: (1, 5)
使用sum()和tuple()
该程序使用sum()来添加列表中的最小数对,并使用内置方法tuple将其结果设置为元组形式的最小数对。
示例
在以下示例中,程序从名为min_pair_sum的函数开始,该函数接受参数nums以接收来自变量num(通过函数调用)的列表值。在这个函数中,列表按升序排序。通过将前两个元素添加到排序列表中,将计算最小和。排序列表的前两个元素已转换为元组以提供最小数对。然后函数返回最小数对和最小和。接下来,将输入列表存储在变量num中。然后在名为min_pair_sum的函数调用中接受变量num并将其存储在变量r_sum和res_pair中。最后,我们打印最小数对和最小和的结果。
def min_pair_sum(nums):
sorted_nums = sorted(nums)
min_sum = sum(sorted_nums[:2])
min_pair = tuple(sorted_nums[:2])
return min_sum, min_pair
# Create the List
num = [10, 11, 12, 13, 14]
r_sum, res_pair = min_pair_sum(num)
print("Minimum pair sum:", r_sum)
print("Pair:", res_pair)
输出
Minimum pair sum: 21 Pair: (10, 11)
使用itertools.combination
此程序使用itertools模块中的combinations()函数从给定列表生成所有可能的数字对。然后它找到和最小的对,并返回其和及其对。
示例
在下面的例子中,使用itertools模块的combinations函数,find_min_pair_sum函数从给定的列表生成所有可能的数字配对。然后它迭代所有配对以找到具有最小和的配对,并返回最小和和最小配对。然后调用函数以列表的形式传递数字并输出结果。
from itertools import combinations
def find_min_pair_sum(nums):
pairs = combinations(nums, 2)
min_sum = float('inf')
min_pair = ()
for pair in pairs:
pair_sum = sum(pair)
if pair_sum < min_sum:
min_sum = pair_sum
min_pair = pair
return min_sum, min_pair
# Create the list
numbers = [4, 2, 9, 5, 1]
result_sum, result_pair = find_min_pair_sum(numbers)
print("Minimum pair sum:", result_sum)
print("Pair:", result_pair)
输出
Minimum pair sum: 3 Pair: (2, 1)
结论
我们讨论了解决问题陈述的各种方法。在列表中查找最小的数对和对于各种应用程序至关重要,例如成本优化、距离计算以及解决问题和数据处理工作中的时间效率分析。
数据结构
网络
关系型数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP