• 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.

Object Storage Arubacloud
0 głosów
1,140 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 (91,050 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ź 349 wizyt
pytanie zadane 14 października 2022 w Python przez Ichbinda Nowicjusz (230 p.)
0 głosów
1 odpowiedź 111 wizyt
0 głosów
1 odpowiedź 112 wizyt

92,579 zapytań

141,432 odpowiedzi

319,664 komentarzy

61,964 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...