嵌套元组的最大值

时间:2018-02-13 17:56:57

标签: python nested tuples elements

所以我在打印出最大数量的嵌套元组时遇到了麻烦。让我回顾一下这里。所以我非常清楚如何分别打印元素,如何将分离的元素分配到新的元组,以及如何打印出最大数量的常规元组。好吧,我很久以前就接受了一项挑战,希望我能编写一个打印出最大数量的嵌套元组的程序。起初,我认为这可能很容易,但我一直打印出相同的变量。让我告诉你我到目前为止的情况。

my_nested_tuple = ((2,12), (24, 7), (9, 18), (22, 13))

def highest_element(l):
    my_max = l[0]
    for num in l:
        if my_max < num:
            my_max = num
    return my_max

print highest_element (my_nested_tuple)

这是我得到的。该程序保持打印(24,7),但我希望它只打印出最高元素(即24)。

非常感谢任何帮助或提示。谢谢!

编辑:请记住,我参与了计算机科学的数据结构课程,而且还没有进一步发展。

5 个答案:

答案 0 :(得分:3)

您可以计算每个元组中最大值的最大值。

这是一个简短的解决方案:

max(map(max, my_nested_tuple))

相当于:

max(max(el) for el in my_nested_tuple)

答案 1 :(得分:1)

这是一种在懒惰生成器上计算单个max的方法。

from itertools import chain

my_nested_tuple = ((2,12), (24, 7), (9, 18), (22, 13))

max(chain.from_iterable(my_nested_tuple))

# 24

答案 2 :(得分:0)

答案 3 :(得分:0)

from itertools import chain
max(chain(*my_nested_tuple))

首先使元组变平,然后计算最大值

答案 4 :(得分:0)

你可以对它进行排序,首先是每个元组的第一个元素,然后是第二个元素,最后比较两者中最大的元素:

by_first = sorted(my_nested_tuple)
by_second = sorted(my_nested_tuple, key=lambda tup: tup[1])
print(max(by_first[-1][0], by_second[-1][1]))

或直接使用max()函数:

by_first = max(my_nested_tuple)[0]
by_second = max(my_nested_tuple, key=lambda tup: tup[1])[1]
print(max(by_first, by_second))