Seznam (pole, list) nám poskytuje způsob, jak ukládat větší množství hodnot přehledně a na jedno místo.

Definice pole (vytvoření)

editovat
a = ["Jaruš", "Petra", "Lenka", "Patrik", "Lukáš", "Marek", "Jan", "Luboš"]   
b = [8, 9, 3, 31, 16, 3.14, 2.879316]
c = [2, 14, 3, 2, 2, 1, 7, 1, 5, 11, 8 ]
d = [ "Jaruš", 3, 8 , 1, 1, "Patrik", 3.14]

Čtení prvku

editovat
a = ["Jaruš", "Petra", "Lenka", "Patrik", "Lukáš", "Marek", "Jan", "Luboš"] 
#       0        1        2        3         4        5       6       7
print(a)        # vypíše celý seznam
print(a[0])     # vypíše první prvek: Jaruš
print(a[-1])    # vypíše poslední prvek: Luboš
print(a[2::])   # vypíše seznam od třetího prvku (indexu 2): od Lenka po Luboš
print(a[::-1])  # vypíše seznam po spátku 
print(a[1:4])   # vypíše seznam od indexu 1 do 4 (čtyřku "Lukáš" nevypisuje), od Petra do Patrika

Výstup:

['Jaruš', 'Petra', 'Lenka', 'Patrik', 'Lukáš', 'Marek', 'Jan', 'Luboš']
Jaruš
Luboš
['Lenka', 'Patrik', 'Lukáš', 'Marek', 'Jan', 'Luboš']
['Luboš', 'Jan', 'Marek', 'Lukáš', 'Patrik', 'Lenka', 'Petra', 'Jaruš']
['Petra', 'Lenka', 'Patrik']

Změna prvku

editovat
a = ["Jaruš", "Petra", "Lenka", "Patrik", "Lukáš", "Marek", "Jan", "Luboš"] 
a[0] = "Mikuláš"
a[1] = 123
print(a)

Výstup:

['Mikuláš', 123, 'Lenka', 'Patrik', 'Lukáš', 'Marek', 'Jan', 'Luboš']

Přidání prvku na konec

editovat
a = ["Jaruš", "Petra", "Lenka", "Patrik", "Lukáš", "Marek", "Jan", "Luboš"] 
a.append("Jakeš")
a.append("Hrubeš")
a.append(666)
print(a)

Výstup:

['Jaruš', 'Petra', 'Lenka', 'Patrik', 'Lukáš', 'Marek', 'Jan', 'Luboš', 'Jakeš', 'Hrubeš', 666]

Odebírání prvku

editovat

Metoda pop() zachází s listem (seznamem) jako se zásobníkem, odebírá od konce. Chceme-li se k listu chovat jako k frontě a odbírat první prvek, použijeme pop(0).

a = ["Jaruš", "Petra", "Lenka", "Patrik", "Lukáš", "Marek", "Jan", "Luboš"]
print(a)    # vypíše celý seznam

a.pop()     # odebere poslední prvek "Luboš"
print(a)    # vypíše aktuální seznam

a.pop()     # odebere dašlí poslední prvek "Jan"
print(a)    # vypíše aktulání seznam

Výstup:

['Jaruš', 'Petra', 'Lenka', 'Patrik', 'Lukáš', 'Marek', 'Jan', 'Luboš']
['Jaruš', 'Petra', 'Lenka', 'Patrik', 'Lukáš', 'Marek', 'Jan']
['Jaruš', 'Petra', 'Lenka', 'Patrik', 'Lukáš', 'Marek']


a = ["Jaruš", "Petra", "Lenka", "Patrik", "Lukáš", "Marek", "Jan", "Luboš"]
print(a.pop())  # vymaže poslední prvek "Luboš" a vypíše ho
print(a.pop())  # vymaže poslední prvek "Jan" a vypíše ho
print(a.pop())  # vymaže poslední prvek "Marek" a vypíše ho
print(a)        # vypíše aktuální seznam

Výstup:

Luboš
Jan
Marek
['Jaruš', 'Petra', 'Lenka', 'Patrik', 'Lukáš']


Odebírání prvku od začátku:

a = ["Jaruš", "Petra", "Lenka", "Patrik", "Lukáš", "Marek", "Jan", "Luboš"]
print(a.pop(0))   # odebere první prvek "Jaruš" a vypíše ho
print(a.pop(0))   # odebere první prvek "Petra" a vypíše ho
print(a.pop(0))   # odebere první prvek "Lenka" a vypíše ho
print(a)          # vypíše aktuální seznam

Výstup:

Jaruš
Petra
Lenka
['Patrik', 'Lukáš', 'Marek', 'Jan', 'Luboš']

Smazání celého pole

editovat
a = ["Jaruš", "Petra", "Lenka", "Patrik", "Lukáš", "Marek", "Jan", "Luboš"]
a.clear()
print(a)

Výstup:

[]

Seřazení pole podle abecedy

editovat
a = ["Jaruš", "Petra", "Lenka", "Patrik", "Lukáš", "Marek", "Jan", "Luboš"]
a.sort() # seřazení podle abecedy (vzestupně)
print(a)

Výstup:

['Jan', 'Jaruš', 'Lenka', 'Luboš', 'Lukáš', 'Marek', 'Patrik', 'Petra']


seřazení reverzně od konce abecedy:

a = ["Jaruš", "Petra", "Lenka", "Patrik", "Lukáš", "Marek", "Jan", "Luboš"]
a.sort(reverse=True) # seřazení od konce abecedy (reverzně, sestupně)
print(a)

Výstup:

['Petra', 'Patrik', 'Marek', 'Lukáš', 'Luboš', 'Lenka', 'Jaruš', 'Jan']

Obrácení seznamu

editovat
a = ["Banány", "Jahody", 123]
print(a[::-1])      # otočí pořadí prvků

Výstup:

[123, 'Jahody', 'Banány']


nebo:

a = ["Banány", "Jahody", 123]
a.reverse()
print(a)

Výstup:

[123, 'Jahody', 'Banány']

Normální a záporný index

editovat
a = ['p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z']
#     0    1    2    3    4    5    6    7    8
#    -9   -8   -7   -6   -5   -4   -3   -2   -1
print(a[8])
print(a[-1])
print()
print(a[0])
print(a[-9])

Výstup:

z
z

p
p

Délka listu

editovat
a = ['p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z']
print(len(a))

Výstup:

9

Spojování listů

editovat
a = [1,2,3]
b = ["Python", "JavaScript"]
print(a + b)

Výstup:

[1, 2, 3, 'Python', 'JavaScript']


a = [1,2,3] + [4,5,6]
print(a)

Výstup:

[1, 2, 3, 4, 5, 6]

Multiplikace položek listu

editovat
a = [1,2,3,"A"] * 4
print(a)

Výstup:

[1, 2, 3, 'A', 1, 2, 3, 'A', 1, 2, 3, 'A', 1, 2, 3, 'A']


a = ["Po", "Ut", "St", "Čt", "Pa", "So", "Ne"] * 4
b = [1, 2, 3, 4, 5, 6, 7] * 4
c = ["Haf"] * 8
print(a)
print(b)
print(c)

Výstup:

['Po', 'Ut', 'St', 'Čt', 'Pa', 'So', 'Ne', 'Po', 'Ut', 'St', 'Čt', 'Pa', 'So', 'Ne', 'Po', 'Ut', 'St', 'Čt', 'Pa', 'So', 'Ne', 'Po', 'Ut', 'St', 'Čt', 'Pa', 'So', 'Ne']
[1, 2, 3, 4, 5, 6, 7, 1, 2, 3, 4, 5, 6, 7, 1, 2, 3, 4, 5, 6, 7, 1, 2, 3, 4, 5, 6, 7]
['Haf', 'Haf', 'Haf', 'Haf', 'Haf', 'Haf', 'Haf', 'Haf']


Generování řady čísel do listu

editovat
# generování 10 čísel
# range(1, 10) je řada čísel od 1 do 9
a = [2 ** x for x in range(10)]   
b = [x * 2 for x in range(10)] 
c = [x + 5 for x in range(10)] 
d = [x for x in range(10)]          # range(10) je řada čísel od 0 do 10
e = [x for x in range(1, 10)]       # range(1, 10) je řada čísel od 1 do 9
f = [x for x in range(1, 10+1)]     # range(1, 10+1) je řada čísel od 1 do 10
print("2 ** x :", a)
print("x * 2 :", b)
print("x + 5 :", c)
print("range(10) :", d)
print("range(1, 10) :", e)
print("range(1, 10+1) :", f)

Výstup:

2 ** x : [1, 2, 4, 8, 16, 32, 64, 128, 256, 512]
x * 2 : [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
x + 5 : [5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
range(10) : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
range(1, 10) : [1, 2, 3, 4, 5, 6, 7, 8, 9]
range(1, 10+1) : [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]


a = [x * 2 for x in range(10) if x > 5]  # seznam čísel x * 2, ale jen ta, kde x je větší než 5
print(a)

Výstup:

[12, 14, 16, 18]

Porovnání dvou listů

editovat
# listy jsou schodné jen pokud májí stejné prvky a tyto prvky mají stejné pořadí
a = [1, 2, 3, 4] == [4, 1, 3, 2]    # vrátí False, protože záleží na uspořádání
b = [1, 2, 3, 4] == [1, 2, 3, 4]    # vrátí True, protože záleží na uspořádání
print(a)
print(b)

Výstup:

False
True

Testování existence položky v listu

editovat
a = "Python" in [1, 2, 3, 4]                    # vrátí False protože "Python" není v seznamu
b = "Python" in [1, 2, "Python", 3, 4, "ahoj"]  # vrátí True protože "Python" je v seznamu
c = "ahoj" in [1, 2, "Python", 3, 4, "ahoj"]    # vrátí True protože "ahoj" je v seznamu
d = "Ahoj" in [1, 2, "Python", 3, 4, "ahoj"]    # vrátí False protože "Ahoj" není v seznamu
print(a)
print(b)
print(c)
print(d)

Výstup:

False
True
True
False