所以我在打印出最大数量的嵌套元组时遇到了麻烦。让我回顾一下这里。所以我非常清楚如何分别打印元素,如何将分离的元素分配到新的元组,以及如何打印出最大数量的常规元组。好吧,我很久以前就接受了一项挑战,希望我能编写一个打印出最大数量的嵌套元组的程序。起初,我认为这可能很容易,但我一直打印出相同的变量。让我告诉你我到目前为止的情况。
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)。
非常感谢任何帮助或提示。谢谢!
编辑:请记住,我参与了计算机科学的数据结构课程,而且还没有进一步发展。
答案 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)
转换为一个元组,然后使用max
max(sum(my_nested_tuple,()))
Out[720]: 24
通知 :
答案 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))