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

Python:创建一个比较两个数组并在两个数组之间插入较大元素的函数,python,arrays,list,function,insert,Python,Arrays,List,Function,Insert,我正在尝试创建一个函数,该函数比较两个数组,并创建一个新列表,其中包含列表中的最大元素,而不使用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,

我正在尝试创建一个函数,该函数比较两个数组,并创建一个新列表,其中包含列表中的最大元素,而不使用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)

你在找这样的东西吗:

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

l = []
for i,j in enumerate(zip(list_a, list_b)):
    l.insert(i, max(j))

print(l)

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

list_a=[12,5,8,19,6]
列表_b=[3,6,2,12,4]
max_数组=[zip中i的max(i)(列表a,列表b)]
打印(最大数组)
这里的解释是:
zip
将n个iterables转换为元组上的迭代器,其中每个元组都有
n个
项。因此,在两个列表中,
zip([1,2,3],[4,5,6])
变成
((1,4)、(2,5)、(3,6))
。取所有这些元组的
max
,可以得到您的列表

一个重要的警告是,生成的元组数是
zip
中最短的iterable的长度,这一点让我非常恼火。换句话说,
zip
在传递不同长度的iterables时不会抛出异常,而在其中一个输入列表用完时停止。在这方面,它不同于
numpy.max
,当给定不同长度的列表时,它确实会引发错误。

其他方式使用:

输出:

[12, 6, 8, 19, 6]
这比列表理解快约1.4倍:

%timeit list(starmap(max, zip(list_a, list_b)))
# 1.19 µs ± 49.3 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

%timeit [max(i) for i in zip(list_a, list_b)]
# 1.69 µs ± 213 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

您可以使用多种方法进行求解,就像使用zip函数进行函数或列表理解一样。 在下面的解决方案中,如果两个长度相同,则取一个列表长度并迭代,然后使用“append”/“insert”选项将值添加到列表中

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

maximum_arrays = []
list_length = len(list_a)
for item in range(list_length):
if list_b[item] > list_a[item]:
    maximum_arrays.append(list_b[item])
else:
    maximum_arrays.append(list_a[item])

print(maximum_arrays)
list_a = [12,5,8,19,6]
list_b = [3,6,2,12,4]

maximum_arrays = []
list_length = len(list_a)
for item in range(list_length):
if list_b[item] > list_a[item]:
    maximum_arrays.append(list_b[item])
else:
    maximum_arrays.append(list_a[item])

print(maximum_arrays)