Więc mam problem z wydrukowaniemnajwiększa liczba zagnieżdżonej krotki. Pozwólcie, że trochę się cofnę. Więc mam naprawdę dobry pomysł, jak oddzielnie drukować elementy, jak przypisywać oddzielne elementy do nowej krotki i jak wydrukować największą liczbę zwykłej krotki. Cóż, nie tak dawno postawiono mi wyzwanie, że chcę napisać program, który wypisuje największą liczbę a zagnieżdżony krotka. Na początku myślałem, że to może być łatwe, ale wciąż drukuję te same zmienne. Pokażę ci, co mam do tej pory.
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)
To jest tak daleko, jak dotarłem. Program nadal drukuje (24,7), ale chcę, aby wydrukował tylko najwyższy element (czyli 24).
Każda pomoc lub wskazówki będą bardzo mile widziane. Dzięki!
EDYCJA: Pamiętaj, że jestem w lekcji struktur danych w intro informatyce i nie poszedłem dalej.
Odpowiedzi:
3 dla odpowiedzi № 1Możesz obliczyć maksimum spośród wartości maksymalnych w każdej krotce.
Oto krótkie rozwiązanie:
max(map(max, my_nested_tuple))
co jest równoznaczne z:
max(max(el) for el in my_nested_tuple)
1 dla odpowiedzi nr 2
Oto jeden sposób obliczania pojedynczego max
na leniwym generatorze.
from itertools import chain
my_nested_tuple = ((2,12), (24, 7), (9, 18), (22, 13))
max(chain.from_iterable(my_nested_tuple))
# 24
0 dla odpowiedzi № 3
from itertools import chain
max(chain(*my_nested_tuple))
Najpierw spłaszcza krotkę, a następnie oblicza max.
0 dla odpowiedzi nr 4
Konwertuj na jedną krotkę, a następnie użyj max
max(sum(my_nested_tuple,()))
Out[720]: 24
Ogłoszenie :
0 dla odpowiedzi № 5
Możesz je sortować, najpierw przez pierwszy element każdej krotki, a następnie przez drugi element, a na końcu porównać największy z dwóch:
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]))
Lub użyj bezpośrednio funkcji max () w następujący sposób:
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))