Python:比较两个列表,并用符号获取最大值和最小值

Ped*_*iel 5 python list

我有两个清单清单。一个具有最大值,另一个具有最小值:

list_max = [
    [100, 10, 100],
    [-50, 90, -50]
    ]
list_min = [
    [50, -90, -50],
    [-100, -10, -500]
    ]
Run Code Online (Sandbox Code Playgroud)

我想获取每个相关项目的最大绝对值及其符号的第三个列表,即:

list_max[0][0] = 100; list_min[0][0] = 50  -> list_3[0][0] = 100
list_max[0][1] = 10;  list_min[0][1] = -90 -> list_3[0][1] = -90

list_3 = [
    [100, -90, 100],
    [-100, 90, -500]
]
Run Code Online (Sandbox Code Playgroud)

也许和熊猫在一起?

L3v*_*han 9

您不需要熊猫:

list_3 = [
    [max((x, y), key=abs) for x, y in zip(line_max, line_min)]
    for line_max, line_min in zip(list_max, list_min)
]
Run Code Online (Sandbox Code Playgroud)

诀窍在于zip,并max具有按键功能abs

如果绝对绝对相等(例如-50vs. 50),则此解决方案将首选正值(因为abs采用第一个最大值)。如果需要相反的操作,请交换xy调用max


小智 4

正如 L3viathan 所示,您不需要 pandas。但仅供参考,使用 pandas 你可以这样做:

import pandas as pd

list_max = pd.DataFrame([
    [100, 10, 100],
    [-50, 90, -50]
])
list_min = pd.DataFrame([
    [50, -90, -50],
    [-100, -10, -500]
])

list_3 = list_max.where(abs(list_max) > abs(list_min), list_min)
Run Code Online (Sandbox Code Playgroud)