Wpis z mikrobloga

mireczki z #programowanie i #python

Problem:
mam tablice w której mogą byc wartosci od 0 do 51
chciałbym sprawdzić czy conajmniej 5 z tych wartości należy do któregoś z przedziałów [0:12], [13:25], [26:38] lub [39:51]

oczywiscie tablica posortowana

Czy da sie to zrobić bez uzycia pętli czy tylko forem leciec po kolejnych elementach?

próbowałem za pomocą:
tablica = [0, 1, 2, 3, 4, 22, 23]

tablica[0:5] in range(0:12) - nie zadziałało i wywaliło false
  • 8
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@SteveStifler: nie działało, bo wykonało się to do czegoś takiego:

[0,1,2,3,4] in [0,1,2,3,4,5,6,7,8,9,10,11,12] - co zwraca false,
[0,1,2,3,4] in [[0,1,2,3,4],0,1,2,3,4,5,6,7,8,9,10,11,12] - zwróciłoby true
  • Odpowiedz
@kostur86: @SteveStifler: dla dobrych prędkości/dużych list jesli nie chce się używać pętli to de facto wystarczy użyć generatora (np filter()), dzięki temu można wykonać szukanie też na nieposortowanym zbiorze i tylko tak długo, aż nie zostanie znaleziony piąty pasujący element - czyli optymistycznie złożoność jest stała o(1) - wykona 5 sprawdzeń, pesymistycznie wykona o(n) sprawdzeń - tutaj jednak złożoność dla posortowanej tablicy nie ulega znaczącej poprawie, chyba żeby
  • Odpowiedz