11 stycznia 2014

[python] Wykrajanie sekwencji

Wykrajanie (slice) sekwencji:
#
# s[i:j:k] -> wycinek s od i do j - [i, j) - z krokiem k
#
s = [0, 1, 2, 3, 4]

# stwórz sekwencje z elementów o indeksach [i, j), i <= j
print s[1:3]
print s[1:1] # [i, i) -> zbiór pusty
[1, 2]
[]

# jeżeli i jest pominięte lub równe None, przyjmij że jest równe 0
print s[:2] # s[0:2]
[0, 1]

# jeżeli j jest pominięte lub równe None, przyjmij że jest równe len(s)
print s[2:]
[2, 3, 4]

# jeżeli i lub j jest większe od len(s), użyj len(s)
print s[2:800]
[2, 3, 4]

# dla i, j negatywnych, oblicz nowe i := len(s) + i albo j := len(s) + j
print s[-1]
print s[-1:1] # odpowiednik s[4, 1], ponieważ i > j dostaniemy zbiór pusty
4
[]

# wybierz co k-ty element (i, i+k, i+2*k, ...) z sekwencji pomiędzy indeksami [i, j)
print s[0:4:2]
print s[::2]   # s[0:len(s):2] -> s[0:4:2]
[0, 2]
[0, 2, 4]

# jeżeli i lub j są pominięte stają się wartościami końcowymi ("end"), to jaka to
# wartość końcowa, zależy od znaku k
# dla k < 0, sekwencja będzie odwrócona, czyli s' := [4, 3, 2, 1, 0]
print s[::-1]  # odpowiednik -> s'[0:len(s):-1]
print s[::-2]  # odpowiednik -> s'[0:len(s):-1]
print s[:2:-1] # odpowiednik -> s'[0:2:-1]
[4, 3, 2, 1, 0]
[4, 2, 0]
[4, 3]

# k nie może być równe 0
print s[1:4:0] # Wyjątek!
ValueError: slice step cannot be zero

Brak komentarzy:

Prześlij komentarz