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()函数,并将求和应用于列表索引元素,这将有助于找到最小对的和。
示例
在下面的示例中,以min_pair开头的程序接受一个数字列表作为参数。在函数中,使用内置的sort函数对数字列表进行排序。将排序后列表的前两个元素相加以确定最小和。将排序后列表的前两个元素转换为元组以提供最小对。函数返回最小对和最小和。然后创建列表并将其存储在变量num中。然后调用名为min_pair的函数,并将其结果存储在变量r_sum和r_pair中。最后,使用相同的变量在打印函数中获取结果。
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中。然后在函数调用中接受变量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)
结论
我们讨论了各种解决问题陈述的方法。在列表中找到最小的配对和对于各种应用非常重要,如成本优化、距离计算和问题解决和数据处理工作中的时间效率分析。