Přeskočit na obsah

Python/Kenjiro995/Vnořené cykly for

Z Wikiverzity

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