寻找一组数组中的最小值和最大值

3

假设我有一个包含两个数组的单一数组,例如:

main_array = [[1, 2, 3, 4], [4, 5, 6, 7]]

我想找出每个数组的minmax,并将它们存储在一个单独的数组中。对于上面的例子,应该是这样的:
result = [1, 4, 4, 7]

在这种情况下,我该如何使用Python内置的min()max()函数?

我尝试使用min(main_array)max(main_array),但结果是:

result = [1,7]

3
你好,欢迎来到StackOverflow。请花些时间阅读帮助页面,特别是名称为“我可以在这里问什么问题?”和“哪些类型的问题应该避免问?”的部分。更重要的是,请阅读Stack Overflow问题清单。你可能还想了解一下最小完整可行示例(MCVE) - Morgan Thrapp
2
展示你所做的。 - The6thSense
8个回答

13

你可以在单个列表上使用min()max()来获取它的最小/最大值。你也可以使用列表推导式循环遍历列表中的列表和要使用的函数:

main_array = [[1,2,3,4], [4,5,6,7]]    
res = [func(l) for l in main_array for func in (min, max)]    
print(res)

1
main_array = [[1, 2, 3, 4], [4, 5, 6, 7]]
result = []

for inner_list in main_array:
    result.append(min(inner_list))
    result.append(max(inner_list))

1
可能更易读的方法是:

result = []
for list in main_array:
    result.append(min(list))
    result.append(max(list))

print(result)

1

尝试

main_array = [[1,2,3,4],[4,5,6,7]]

out = []
for arr in main_array:
    out.extend([min(arr), max(arr)])

print(out)

你需要迭代每个子数组并调用minmax
你也可以使用生成器。
def minthenmax(arr):
    for i in arr:
        yield min(i)
        yield max(i)

print(list(minthenmax(main_array)))

0
首先,你在主数组的定义上缺少了一个常见的符号...
 main_array = [[1,2,3,4],[4,5,6,7]]

获取第一个子数组的最小值。
min(main_array[0])

...和最大值...

max(main_array[0])

希望你能从这个中理解其余的内容。

0
main_array = [[1,2,3,4],[4,5,6,7]]
x = min(main_array[0]), max(main_array[0])
y = min(main_array[1]), max(main_array[1])
new_array = [i for i in x + y]
print (new_array)

输出:

[1, 4, 4, 7]

0
你需要在lst的每个项目中搜索最小值和最大值。
lst = [[1,2,3,4],[4,5,6,7]]
m = []
for k in lst: m.append([min(k), max(k)])
=> [[1, 4], [4, 7]]


请通过编辑您的答案来解释 OP 代码中的问题以及为什么这个解决方案可以解决问题。 - Baum mit Augen

0
在一行代码中,你可以使用内置的 map 函数将两个内部列表映射到 min 函数和 max 函数。最后你可以将它们连接起来。
`map(min, main_array) + map(max, main_array)`

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接