• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Podciągi rosnące w liście.

VPS Starter Arubacloud
0 głosów
1,120 wizyt
pytanie zadane 3 marca 2019 w Python przez bednar98 Początkujący (440 p.)
Cześć mam problem z takim zadaniem:

Napisz funkcję, która dla podanej jako parametr listy zawierającej ciąg

liczb, sprawdza ile dana lista zawiera uszeregowanych rosnąco podcią-
gów liczb. Funkcja powinna zwracać listę zawierającą ilość podciągów o

długości zgodnej z indeksem wynikowej listy. Pomijamy pozycję zerową
(0) oraz pierwszą (1). Np: lista [2, 4, 5, 6, 7, 2, 3, 2, 2, 2, 8, 7, 5, 6] zawiera
siedem ciągów dwuelementowych {[2, 4], [4, 5], [5, 6], [6, 7], [2, 3], [2, 8], [5, 6]},

trzy ciągi trzyelementowe {[2, 4, 5], [4, 5, 6], [5, 6, 7]}, dwa czteroelemen-
towe {[2, 4, 5, 6], [4, 5, 6, 7]} oraz 1 ciąg pięcioelementowy {[2, 4, 5, 6, 7]},

zatem lista wyjściowa będzie wyglądała [0, 0, 7, 3, 2, 1].

Próbowałem to zadanie robić poprzez sprawdzenie długości najdłuższego ciągu, ale nie zbyt mi to wychodzi. Pomoże ktoś?

1 odpowiedź

0 głosów
odpowiedź 3 marca 2019 przez Benek Szeryf (90,690 p.)
wybrane 4 marca 2019 przez bednar98
 
Najlepsza

Weźmy listę, którą podałeś. Trzeba z niej wydzielić wszystkie mniejsze listy o określonej długości. Na przykład dla listy 3-elementowej możesz to zrobić tak:

L = [2, 4, 5, 6, 7, 2, 3, 2, 2, 2, 8, 7, 5, 6]
n = 3

for i in range(len(L)):
    print(L[i:i+n])

Dostaniesz:

[2, 4, 5]
[4, 5, 6]
[5, 6, 7]
[6, 7, 2]
[7, 2, 3]
[2, 3, 2]
[3, 2, 2]
[2, 2, 2]
[2, 2, 8]
[2, 8, 7]
[8, 7, 5]
[7, 5, 6]
[5, 6]
[6]

Trzeba więc wybrać tylko te listy, które mają 3 elementy. Ostatnim krokiem jest sprawdzenie, czy elementy każdej z list tworzą ciągi rosnące. Wykorzystaj funkcję all():

l = [2, 4, 5, 6]
k = [3, 1, 4, 5]

all(i < j for i, j in zip(l, l[1:])) # zwraca True
all(i < j for i, j in zip(k, k[1:])) # zwraca False

Poskładaj to w całość i masz rozwiązane zadanie.

komentarz 4 marca 2019 przez bednar98 Początkujący (440 p.)
Dzięki bardzo za pomoc! Mimo, że udało mi się już samemu to rozwiązać to i tak serdecznie dziękuję!

Podobne pytania

0 głosów
1 odpowiedź 326 wizyt
pytanie zadane 14 października 2022 w Python przez Ichbinda Nowicjusz (230 p.)
0 głosów
1 odpowiedź 107 wizyt
0 głosów
1 odpowiedź 107 wizyt

92,455 zapytań

141,263 odpowiedzi

319,099 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...