Python/Kenjiro995/Vnořené cykly for
Základní vlastností vnořených cyklů
[editovat]Vnořené cykly připomínají kartézský součin dvou množin, tedy uspořádanou n-tici. Protože nejdříve se vykoná celý nejhlouběji vnořený cyklus, aby se o jedno posunul nadřazený cyklus a znovu se provedl celý vnořený cyklus, a tak stále do kola, dokud neproběhnou všechny cykly. To znamená že v cyklu 1 se provedou všechny cykly a, b, c, d, e. Tím se nadřazený cyklus přesune do 2 a provede se znovu celý vnořený cyklus a, b, c, d, e. Tým se nadřazený cyklus přesune do 3 a provede se znovu celý vnořený cyklus a, b, c, d, e. Takto stále dokola, dokud se neprovedou všechny cykly až do 5.
x = 0
for i in [1, 2, 3, 4, 5]:
for n in [1, 2, 3, 4, 5]:
x = x + 1
print("celkem provedeno cyklů: ", i, "*", n, "=",x)
Výstup:
celkem provedeno cyklů: 5 * 5 = 25
V případě použití příkazu range(start, stop), je třeba si uvědomit, že skutečný rozsah hodnot je od start do stop-1. Tedy, že range(1, 5) je rozsah od 1 do 4:
x = 0
for i in range(1, 5):
for n in range(1, 5):
x = x + 1
print("celkem provedeno cyklů: ", i, "*", n, "=",x)
Výstup:
celkem provedeno cyklů: 4 * 4 = 16
x = 0
for i in range(1, 5):
for n in range(1, 11):
x = x + 1
print("celkem provedeno cyklů: ", i, "*", n, "=",x)
Výstup:
celkem provedeno cyklů: 4 * 10 = 40
x = 0
for i in [1, 2, 3, 4, 5]:
for n in ["a", "b", "c", "d", "e"]:
x = x + 1
print(x, i, n)
Výstup:
1 1 a 2 1 b 3 1 c 4 1 d 5 1 e 6 2 a 7 2 b 8 2 c 9 2 d 10 2 e 11 3 a 12 3 b 13 3 c 14 3 d 15 3 e 16 4 a 17 4 b 18 4 c 19 4 d 20 4 e 21 5 a 22 5 b 23 5 c 24 5 d 25 5 e
Uspořádané dvojice kartézského součinu dvou množin {1,2,3,4,5} a {a,b,c,d,e}:
seznam = []
for i in [1, 2, 3, 4, 5]:
for n in ["a", "b", "c", "d", "e"]:
dvojice = []
dvojice.append(i)
dvojice.append(n)
seznam.append(dvojice)
print(seznam)
print("počet záznamů: ", len(seznam))
Výstup:
[[1, 'a'], [1, 'b'], [1, 'c'], [1, 'd'], [1, 'e'], [2, 'a'], [2, 'b'], [2, 'c'], [2, 'd'], [2, 'e'], [3, 'a'], [3, 'b'], [3, 'c'], [3, 'd'], [3, 'e'], [4, 'a'], [4, 'b'], [4, 'c'], [4, 'd'], [4, 'e'], [5, 'a'], [5, 'b'], [5, 'c'], [5, 'd'], [5, 'e']] počet záznamů: 25
Využití
[editovat]a = 5 prvků, b = 3 prvky, proto 5 * 3 = 15 složených slov:
a = ["na", "před", "po", "za", "do"]
b = ["řazen", "učit", "běhnout"]
x = 0
for i in a:
for n in b:
x = x + 1
print(x, i + n)
Výstup:
1 nařazen 2 naučit 3 naběhnout 4 předřazen 5 předučit 6 předběhnout 7 pořazen 8 poučit 9 poběhnout 10 zařazen 11 zaučit 12 zaběhnout 13 dořazen 14 doučit 15 doběhnout