python - Python:创建一个比较 2 个数组并在 2 个数组之间插入较大元素的函数
问题描述
我正在尝试创建一个函数来比较 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
,后者在给定不同长度的列表时会引发错误。
推荐阅读
- google-cloud-platform - 分析语法返回不准确的上下文结果
- php - 如何在不显示的情况下加载 php 文件?(/page.php -> /page)
- go - 附件名称中的 Unicode 字符
- python - 我正在尝试解决 0/1 背包问题,但我得到的输出与零一样多
- html - 非破坏空间(160)和正常空间(32)的宽度不同
- sql - 尝试连接 MySQL 服务器时出现“TDS 流中的协议错误”
- php - 正则表达式匹配任何字符,没有尾随/前导空格+最小/最大长度
- android - 我在 react Native 中有一个平面列表,但我按下按钮保存而不是自动重新加载数据
- mysql - Laravel Eloquent 急切地将多个关系加载到同一个模型会生成多个查询
- botframework - MSFT Teams 不使用 DATE 函数呈现自适应卡