# Listy - konstrukcja i wstepne operacje

# Tworzenie prostych list
lst = [1, 2, 3]
lst = [0, 1.0, "2", print, [1, 2], "abc"] # elementem jest np. funkcja print

# Tworzenie nowej listy podanej dlugosci (jak dla napisow)
n = 7
ls = [0] * n # ls == [0, 0, 0, 0, 0, 0, 0]

# Dlugosc listy
print(len(lst)) # 6

# Odnoszenie sie do obiektow na liscie przez indeksy
print(lst[0]) # 0
print(lst[5]) # "abc"
lst[3]("test!") # print("test!")

# Uwaga - indeksowanie dziala tez np. dla str, tuple

# Podmiana elementow na liscie
lst[0] = 99 # lst == [99, 1.0, "2", print, [1, 2], "abc"]

# Bonus:
# inne znane "ogolne" operacje typowe dla obiektow iterowalnych:

# Ujemne indeksy, indeksowanie od konca
print(lst[-1]) # "abc"
print(lst[-2])

# Iteracja - przez elementy listy
for x in lst:
    print(x)

# iteracja - przez indeksy
for i in range(len(lst)):
    print(lst[i])

