Seznamy
fibonacciho_cisla = [1, 1, 2, 3, 5, 8, 13]
for cislo in fibonacciho_cisla:
print(cislo)
Vybírání ze seznamů
print(fibonacciho_cisla[2])
print(fibonacciho_cisla[2:-3])
Měnění seznamů
fibonacciho_cisla.append(21)
dalsi_prvosisla = [34, 55, 89]
fibonacciho_cisla.extend(dalsi_prvosisla)
fibonacciho_cisla[-1] = 0
fibonacciho_cisla[3:5] = [0, 0, 0, 0]
fibonacciho_cisla.pop()
del fibonacciho_cisla[-1]
del fibonacciho_cisla[3:5]
fibonacciho_cisla.remove(13)
seznam = [4, 7, 8, 3, 5, 2, 4, 8, 5]
seznam.sort()
print(seznam)
Operace se seznamy
melodie = ['C', 'E', 'G'] * 2 + ['E', 'E', 'D', 'E', 'F', 'D'] * 2 + ['E', 'D', 'C']
print(len(melodie)) # Délka seznamu
print(melodie.count('C')) # Počet 'C' v seznamu
print('D' in melodie) # Je 'D' v seznamu?
print(melodie.index('D')) # Číslo prvního 'D'
print('DE' in melodie) # Je 'DE' v seznamu?
print(['D', 'E'] in melodie) # Je ['D', 'E'] v seznamu?
if seznam:
print('V seznamu něco je!')
else:
print('Seznam je prázdný!')
Tvoření seznamů
abeceda = list('abcdefghijklmnopqrstuvwxyz')
cisla = list(range(100))
mocniny_dvou = []
for cislo in range(10):
mocniny_dvou.append(2 ** cislo)
print(mocniny_dvou)
Seznamy a řetězce
split a join
slova = 'Tato věta je složitá, rozdělme ji na slova!'.split()
print(slova)
zaznamy = '3A,8B,2X,9D'.split(',')
print(zaznamy)
veta = ' '.join(slova)
print(veta)
zamen_xo
def zamen_xo(retezec):
vysledek = []
for znak in retezec:
if znak == 'o':
vysledek.append('x')
elif znak == 'x':
vysledek.append('o')
else:
vysledek.append(znak)
return ''.join(vysledek)
print(zamen_xo('---xo--xooxxox-'))
def tah_pocitace(pole, symbol):
if symbol == 'x':
return tah_pocitace_x(pole)
else:
return zamen_xo(tah_pocitace_x(zamen_xo(pole)))
Seznamy a náhoda
shuffle
import random
balicek = []
for barva in '♠', '♥', '♦', '♣':
for hodnota in list(range(2, 11)) + ['J', 'K', 'Q', 'A']:
balicek.append((str(hodnota) + barva))
random.shuffle(balicek)
print('\n'.join(balicek))
choice
import random
mozne_tahy = ['kámen', 'nůžky', 'papír']
tah_pocitace = random.choice(mozne_tahy)
Aliasy
a = [1, 2, 3]
b = a
b.append(4)
print(a)
def pridej_ctvertku(seznam):
seznam.append(4)
a = [1, 2, 3]
b = a
pridej_ctvertku(b)
print(a)
N-tice
osoby = 'máma', 'teta', 'babička'
for osoba in trojice:
print(''.format{osoba})
seznam_dvojic = []
for i in range(10):
seznam_dvojic.append((i, i**2))
print(seznam_dvojic)
def podil_a_zbytek(a, b):
return a // b, a % b
podil, zbytek = podil_a_zbytek(12, 5)
zip
osoby = 'máma', 'teta', 'babička'
vlastnosti = 'hodná', 'milá', 'laskavá'
for osoba, vlastnost in zip(osoby, vlastnosti):
print('{} je {}'.format(osoba, vlastnost))
enumerate
prvocisla = [1, 1, 2, 3, 5, 8, 13]
for i, prvocislo in enumerate(prvocisla):
print('Pvočíslo č.{} je {}'.format(i, prvocislo))
Kdy použít seznam, a kdy n-tici?
Seznamy se používají, když předem nevíme,
kolik v nich přesně bude hodnot,
nebo když je hodnot mnoho.
Například seznam slov ve větě,
seznam účastníků soutěže, seznam tahů ve hře,
nebo seznam karet v balíčku.
Oproti tomu for pozdrav in 'Ahoj', 'Hello', 'Hola', 'Hei', 'SYN':
používá n-tici.
Seznamy se taky používají,
když v nich jsou všechny hodnoty stejného druhu.
Například seznam použijeme na písmena abecedy,
ale dvojice index–hodnota z enumerate
je n-tice.
Seznamy i n-tice mají i technické limity:
n-tice nejdou měnit,
a až se naučíme pracovat se slovníky,
zjistíme že seznamy tam nepůjdou použít jako klíče.
Vnořené seznamy
def vytvor_tabulku(velikost=11):
seznam_seznamu = []
for a in range(velikost):
seznam_cisel = []
for b in range(velikost):
seznam_cisel.append(a * b)
seznam_seznamu.append(seznam_cisel)
return seznam_seznamu
nasobilka = vytvor_tabulku()
for radek in nasobilka:
for cislo in radek:
print(cislo, end=' ')
print()
print(nasobilka[3][4])
nasobilka[9][7] = 8
Hra