gpt4 book ai didi

Python:创建一个比较两个数组并在两个数组之间插入较大元素的函数

转载 作者:行者123 更新时间:2023-12-01 07:14:59 24 4
gpt4 key购买 nike

我正在尝试创建一个函数来比较 2 个数组,并在不使用 numpy 的情况下使用列表的最大元素创建一个新列表。我设法创建了一个手动版本,但在将其实现为函数时遇到问题。

任务:创建一个函数 Maximum_arrays(a,b),它按元素比较数组 a 和 b,并返回包含较大元素的新数组。使用 insert2 函数将新元素添加到列表中。

示例:将函数应用于数组 a=[12,5,8,19,6] 和 b=[3,6,2,12,4],结果应为 c=[12,6, 8,19,6]。

当前代码:

list_a = [12,5,8,19,6]
list_b = [3,6,2,12,4]

maximum_arrays = []
for item in list_a:
if list_b[item] > list_a[item]:
maximum_arrays.insert(list_b[item])
else:
maximum_arrays.insert(list_a[item])

print(maximum_arrays)

手动版本:

list_a = [12,5,8,19,6]
list_b = [3,6,2,12,4]
#answer example
c = [12,6,8,19,6]

#empty list
maximum_arrays = []

#for each part of the list, choose the highest number of the other list and insert
maximum_arrays.insert(0, max(list_a[0],list_b[0]))
maximum_arrays.insert(1, max(list_a[1],list_b[1]))
maximum_arrays.insert(2, max(list_a[2],list_b[2]))
maximum_arrays.insert(3, max(list_a[3],list_b[3]))
maximum_arrays.insert(4, max(list_a[4],list_b[4]))

print(maximum_arrays)

最佳答案

在压缩列表的列表理解中使用max,或numpy.max

list_a = [12,5,8,19,6]
list_b = [3,6,2,12,4]

max_array = [max(i) for i in zip(list_a, list_b)]

print(max_array)

这里的解释是:zip 将 n 个可迭代对象转换为元组上的迭代器,其中每个元组都有 n 项。因此,在两个列表的情况下, zip([1, 2, 3], [4, 5, 6]) 变成 ((1, 4), (2, 5 ), (3, 6))。取所有这些元组的max即可得到您的列表。

一个重要的警告,也是让我多次恼火的一个警告是,生成的元组数量是 zip最短可迭代对象的长度。换句话说,当传递不同长度的迭代时,zip 不会引发异常,并且在输入列表之一用完时停止。在这方面,它与 numpy.max 不同,后者在给定不同长度的列表时确实会抛出错误。

关于Python:创建一个比较两个数组并在两个数组之间插入较大元素的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58023437/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com