从不同列表中获取特定值以及如何获取

时间:2016-03-17 14:47:57

标签: python list pyqt tuples

我有两个不同的列表,我需要查看并找到其中一个的最大值和最小值。我是python中的新手,我不知道该怎么做。

这是我的代码:

list_1

执行此操作后,我需要为list_2的每个元素分配list_tuples = [(1, 2), (75, 32), (189, 342), ......] 的相应元素,并将这对元素放在另一个列表中。我的意思是,类似于以相应的顺序创建具有两个列表的元素的元组。例如:

$jsonObject = json_encode($dataObj);

if (isset($_GET["callback"])) {
    echo $_GET["callback"] . "(" . $jsonObject . ")";
} else {
    header('Content-Type: application/json');
    echo $jsonObject;
}

我怎样才能做到这一点?希望你能帮帮我。

2 个答案:

答案 0 :(得分:2)

您可以使用以下函数获取可互动的最小值和最大值(例如,您的list):

min(list_1)
max(list_1)

您可以使用zip功能组合两个列表:

combined = list(zip(list_1, list_2))

答案 1 :(得分:1)

好的,我会直接回答你的问题,并且我会留下你的练习,让它适合你的class

>>> list_1 = [1, 75, 189, 298, 749, 15, 897, 658, 928, 93, 922, 576, 898]
>>> list_2 = [2, 32, 342, 2324, 435, 232, 323, 3232, 323, 98, 987, 211, 3232]
>>> min(list_1)
1
>>> max(list_1)
928
>>> min(list_2)
2
>>> max(list_2)
3232
>>> list_1_2 = zip(list_1, list_2)
>>> list(list_1_2)
[(1, 2), (75, 32), (189, 342), (298, 2324), (749, 435), (15, 232), (897, 323), (658, 3232), (928, 323), (93, 98), (922, 987), (576, 211), (898, 3232)]

您可以在全局范围内使用min()max()个函数,这样您就可以找到给定Iterable的最小值和最大值(在我们的示例中为列表)。

当你要配对两个列表时,zip()函数是你的朋友,因为它将值作为元组耦合到新列表中。

编辑:

就像我说的那样,你可以尝试做一些事来回答你自己的问题,放弃使用谷歌min / max,但只是使用基本的算法知识:

使用循环找到min:

def find_minimum(l):
    min_value = float('inf') # use the positive infinite value per default
    for elt in l:
        if elt < min_value:
            min_value = elt
    return min_value

def find_maximum(l):
    max_value = 0
    for elt in l:
        if elt > max_value:
            max_value = elt
    return max_value

显然,在模仿zip()时,工作更难,但使用没有python魔法并非不可能:

def zip_values(l1, l2):
    if len(l1) > len(l2):
        left, right = l1, l2
    else:
        left, right = l2, l1
    ret = []

    # below, there's a nicer way to express this using enumerate(), 
    # but I'm leaving all python magics for the purpose of the example:
    #     for position, value in enumerate(left):
    position = 0
    for value in left:
        if position < len(right):
            ret.append((left[position], right[position],))
        else:
            ret.append((left[position], None,))
        position += 1
    return ret

给出:

>>> zip_values(list_1, list_2)
[(2, 1), (32, 75), (342, 189), (2324, 298), (435, 749), (232, 15), (323, 897), (3232, 658), (323, 928), (98, 93), (987, 922), (211, 576), (3232, 898)]
>>> find_minimum(list_1)
1
>>> find_minimum(list_2)
2
>>> find_maximum(list_1)
928
>>> find_maximum(list_2)
3232