Python - Seznamy (6. díl)

Napsal (») 4. 1. 2011 v kategorii Programování, přečteno: 1887×
banan/img/python-logo-glassy.png

Seznam (list) je sekvence, které používají celá čísla jako indexy pro přístup jednotlivým položkám např, při procházení, vyhledávání apod.

Nevidíme je ale jsou implicitně nastaveny už při definici.


Seznamy jsou podobné slovníkům

Nový seznam vytvoříme (přiřadíme do proměnné) pomocí hranatých závorek, položky mohou být libovolného typu a oddělujeme je čárkou. Seznamy, řetězce a jiné entity, které se chovají jako uspořádané řady, nazýváme sekvence.

Pro přehlednost zvýrazním jednotlivé položky:

>>>seznam = ["ahoj", 8, [1, 16], 42.5] #V třetí sekvenci vidíme složenou entitu.

Přístup k položkám

Syntaxe je opět velmi jednoduchá, stačí napsat dentifikátor a za něj hranaté závorky do nichž vložíme index položky. Nezapomeňte však, že indexace začína od 0! 99 % programovacích jazyků indexuje pole od 0. Toto prosím nezapomínejte (např. při procházení pomocí cyklu for).

>>> print seznam[0] #která pak to je položka?smile
ahoj

  • Pokud bychom chtěli "printovat" položku která neexistuje tak to samozřejmě vypíše chybu.

Jednotlivé položky můžeme tisknout i obráceně a to zadání záporné hodnoty. U -1 bude odkazovat na první položku z opačného směru, čili zprava.

  • Pokud by jste chtěli použít print seznam[-0], vytiskne první položku zleva.!

>>>print seznam[-1]
42.5

Procházení seznamem

Pro procházení seznamem, jak jsem již zmínil, je vhodné použít cyklus for. Nyní si předvedeme jak by takový cyklus vypadal na jednoduchém příkladu.

>>> for i in ["ahoj", 8, [1, 16], 42.5]: #nezapomínat na dvojtečku!
print i,

ahoj 8 [1, 16] 42.5

Lze také využít cyklus while:

i = 0
while i < len(horsemen):
print horsemen[i]
i = i + 1

Operace se seznamy

Operátor + zřetězí seznamy a pomocí operátoru * můžeme násobit záznamy:

>>> a = [1, 2, 3]
>>> b = [4, 5, 6]
>>> c = a + b
>>> print c
[1, 2, 3, 4, 5, 6]
>>> [0] * 4
[0, 0, 0, 0]
>>> [1, 2, 3] * 3
[1, 2, 3, 1, 2, 3, 1, 2, 3]

Úseky

Pomáhají vybírat prvky v nějakém pořadí:

>>> list = ['a', 'b', 'c', 'd', 'e', 'f']
>>> list[1:3] #vybere 2. a zastaví se před 4.
['b', 'c']
>>> list[:4] #vybírá první 4
['a', 'b', 'c', 'd']
>>> list[3:] #poslední 4
['d', 'e', 'f']
>>> list[:] #netřeba komentovat
['a', 'b', 'c', 'd', 'e', 'f']

Pokračování příště....smile

Štítky: Python
Hodnocení:     nejlepší   1 2 3 4 5   odpad
Facebook Twitter Topčlánky.cz Linkuj.cz

Komentáře

Knahaka z IP 178.99.83.*** | 22.1.2011 02:35
Ahoj,

nefunguje to:

>>> while i < len(seznam3):
... print seznam[i]
  File "<stdin>", line 2
    print seznam[i]
        ^
IndentationError: expected an indented block
>>> i=0
>>> while i < len(seznam):
... print seznam[i]
  File "<stdin>", line 2
    print seznam[i]
        ^
IndentationError: expected an indented block
>>> print seznam
{'pet': 'five', 1: 'one', 2: 'two', 3: 'three', 4: 'four'}
>>> print seznam2
['ahoj', 1, {'pet': 'five', 1: 'one', 2: 'two', 3: 'three', 4: 'four'}]
>>> print seznam3
['ahoj', 2, ['ahoj', 1, {'pet': 'five', 1: 'one', 2: 'two', 3: 'three', 4: 'four
'}]]
>>> type(seznam)
<type 'dict'>
>>> type(seznam2)
<type 'list'>
>>> type(seznam3)
<type 'list'>
Kamil z IP 78.108.152.*** | 11.3.2013 13:02
... print seznam[i] ... ty tečky tam nemají být, ale tabulátorem odsazené (klávesa tab kdyby náhodou)


Nový komentář

Téma:
Jméno:
Notif. e-mail *:
Komentář:
  [b] [obr]
Odpovězte prosím číslicemi: Součet čísel jedenáct a nula