/ / Maksimum zagnieżdżonej krotki [duplikat] - python, zagnieżdżone, krotki, elementy

Maksymalna zagnieżdżona krotka [duplikat] - python, zagnieżdżone, krotki, elementy

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 № 1

Moż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 :

cóż, nie mam podręcznego podręcznika, alejest to czas kwadratowy, ponieważ + między sekwencjami jest liniowy. Rzeczywiście, sama funkcja sum uniemożliwia ci użycie łańcuchów, np. zobacz, co się stanie, jeśli spróbujesz TypeError: sum () może „t sumować łańcuchy [użyj” ”.join (seq) zamiast tego] Wreszcie, z dokumentu:„ Ta funkcja jest przeznaczona specjalnie do użycia z wartościami liczbowymi i może odrzucać nie-numeryczne typy. ”


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))