V tomto návodu si osvojíte postupy, jakými lze v Pythonu modifikovat seznamy. Konkrétně se zaměříme na přidávání nových prvků, úpravu stávajících a odstraňování nepotřebných položek.
Seznamy patří k základním datovým strukturám, se kterými se setkáte na počátku svého programátorského dobrodružství v jazyce Python. Během několika následujících minut si zopakujeme klíčové vlastnosti seznamů a následně se seznámíme s užitečnými metodami, které se vám při práci s nimi budou hodit.
Pojďme na to!
Základní informace o seznamech v Pythonu
Seznam v Pythonu je uspořádaná kolekce položek, které mohou být stejného nebo různého datového typu. Prostřednictvím cyklů, jako je například for, máte možnost iterovat přes tyto kolekce a přistupovat k jednotlivým prvkům.
Stejně jako všechny iterovatelné objekty v Pythonu, i seznamy používají indexování od nuly a umožňují provádět operace dělení.
Seznamy jsou proměnlivé, což znamená, že je můžete přímo upravovat. To zahrnuje přidávání a odstraňování prvků, seřazování položek, obracení pořadí a mnoho dalšího. Všechny tyto operace usnadňují vestavěné metody seznamů, které Python nabízí.
Nyní se podívejme na některé z těchto užitečných metod.
Vestavěné metody pro práci se seznamy v Pythonu
V této části se budeme věnovat některým metodám, které se vám při práci se seznamy určitě budou hodit. Ukážeme si příklady použití, abychom si ověřili, jak tyto metody fungují v praxi.
Budeme používat následující seznam pgm_langs
, který obsahuje názvy populárních programovacích jazyků.
pgm_langs = ['Python','Go','Rust','JavaScript']
Vkládání prvků do seznamu pomocí metody insert()
Často potřebujete vložit prvek na konkrétní pozici v seznamu. K tomu slouží metoda insert()
, která přijímá dva parametry:
- Index, na který se má nový prvek vložit.
- Vkládaný prvek.
Vložme například řetězec 'Scala'
na index 1 s pomocí metody insert()
.
pgm_langs = ['Python','Go','Rust','JavaScript']
pgm_langs.insert(1,'Scala')
print(pgm_langs)
# Output: ['Python', 'Scala', 'Go', 'Rust', 'JavaScript']
Přidávání prvků na konec seznamu pomocí metody append()
Často je potřeba přidat prvek na konec seznamu. V tomto případě je ideální použít metodu append()
.
Přidejme například řetězec 'Java'
na konec seznamu pomocí metody append()
.
pgm_langs.append('Java')
print(pgm_langs)
# Output: ['Python', 'Scala', 'Go', 'Rust', 'JavaScript', 'Java']
Rozšiřování seznamu o další iterovatelný objekt pomocí metody extend()
Už víte, že pomocí metody append()
můžete přidat jeden prvek. Jak ale přidat více prvků najednou, například další seznam? Metoda extend()
vám to umožní snadno a rychle.
Přidejme prvky ze seznamu more_langs
do seznamu pgm_langs
pomocí metody extend()
.
more_langs = ['C++','C#','C']
pgm_langs.extend(more_langs)
print(pgm_langs)
# Output: ['Python', 'Scala', 'Go', 'Rust', 'JavaScript', 'Java', 'C++', 'C#', 'C']
Můžete procházet seznamem a přidávat prvky jeden po druhém pomocí append()
, ale to je zbytečně složité. Použití metody extend()
je mnohem pohodlnější.
for lang in more_langs:
pgm_langs.append(lang)
Obrácení pořadí prvků v seznamu pomocí metody reverse()
Pro obrácení pořadí prvků v seznamu můžete jednoduše zavolat metodu reverse()
.
Podívejme se, jak se seznam pgm_langs
obrátí přímo na místě.
pgm_langs.reverse()
print(pgm_langs)
# Output: ['C', 'C#', 'C++', 'Java', 'JavaScript', 'Rust', 'Go', 'Scala', 'Python']
Řazení prvků v seznamu pomocí metody sort()
Seznam v Pythonu můžete seřadit přímo na místě pomocí metody sort()
. Protože pgm_langs
je seznam řetězců, řazení probíhá v abecedním pořadí.
pgm_langs.sort()
print(pgm_langs)
# Output: ['C', 'C#', 'C++', 'Go', 'Java', 'JavaScript', 'Python', 'Rust', 'Scala']
Pokud chcete seřadit seznam v obráceném abecedním pořadí, můžete u metody sort()
nastavit parametr reverse
na True
.
pgm_langs.sort(reverse=True)
print(pgm_langs)
# Output: ['Scala', 'Rust', 'Python', 'JavaScript', 'Java', 'Go', 'C++', 'C#', 'C']
Více o řazení seznamů v Pythonu se můžete dozvědět v dalších zdrojích.
Vytváření mělkých kopií seznamů pomocí metody copy()
Někdy je potřeba pracovat s kopií seznamu, aniž bychom modifikovali původní seznam. K tomu slouží metoda copy()
, která vrací mělkou kopii seznamu.
Vytvořme mělkou kopii seznamu pgm_langs
a pojmenujme ji pgm_langs_copy
. Nastavme první prvek v kopii na 'Haskell'
a následně vypišme obsah.
pgm_langs_copy = pgm_langs.copy()
pgm_langs_copy[0]='Haskell'
print(pgm_langs_copy)
# Output: ['Haskell', 'Rust', 'Python', 'JavaScript', 'Java', 'Go', 'C++', 'C#', 'C']
Vidíme, že původní seznam pgm_langs
se nezměnil. Vytvoření mělkého kopie a její úprava tedy nemění původní seznam.
print(pgm_langs)
# Output: ['Scala', 'Rust', 'Python', 'JavaScript', 'Java', 'Go', 'C++', 'C#', 'C']
Zjišťování počtu výskytů prvku v seznamu pomocí metody count()
Občas je užitečné vědět, kolikrát se určitý prvek v seznamu vyskytuje. Metoda count()
vrací počet výskytů daného prvku.
V seznamu pgm_langs
se všechny prvky vyskytují právě jednou. Pokud se pokusíme zjistit počet výskytů 'Go'
, dostaneme 1, což je správně.
print(pgm_langs.count('Go'))
# Output: 1
Metoda count()
se dá využít například k odstranění duplicitních prvků ze seznamu.
Získávání indexu prvku v seznamu pomocí metody index()
Pokud potřebujete zjistit index konkrétního prvku v seznamu, použijte metodu index()
. Představme si, že chceme najít index prvku 'C#'
v seznamu pgm_langs
. Můžeme ověřit, že prvek na indexu 7 je skutečně 'C#'
.
print(pgm_langs.index('C#'))
# Output: 7
assert pgm_langs[7] == 'C#'
Odebírání prvků z konkrétního indexu pomocí metody pop()
Nyní se zaměříme na metody pro odstraňování prvků ze seznamů v Pythonu. Metoda pop()
se používá k odebrání a vrácení prvku na daném indexu. Z předchozího příkladu víme, že 'C#'
se nachází na indexu 7.
Když zavoláme metodu pop()
na seznamu pgm_langs
s indexem 7, vidíme, že vrací 'C#'
, prvek na indexu 7, a zároveň jej odstraňuje ze seznamu.
print(pgm_langs.pop(7))
# Output: 'C#'
print(pgm_langs)
# Output: ['Scala', 'Rust', 'Python', 'JavaScript', 'Java', 'Go', 'C++', 'C']
Metoda pop()
tedy odebere a vrátí prvek na zadaném indexu. Pokud index nezadáte, metoda pop()
odebere a vrátí poslední prvek ze seznamu, jak vidíme níže:
print(pgm_langs.pop())
# Output: 'C'
print(pgm_langs)
# Output: ['Scala', 'Rust', 'Python', 'JavaScript', 'Java', 'Go', 'C++']
Odebírání prvků pomocí metody remove()
V některých případech znáte prvek, který chcete odstranit, ale ne jeho index. V takové situaci můžete použít metodu remove()
, která odebere první výskyt daného prvku. Odeberme například 'Java'
ze seznamu pgm_langs
pomocí metody remove()
.
pgm_langs.remove('Java')
print(pgm_langs)
# Output: ['Scala', 'Rust', 'Python', 'JavaScript', 'Go', 'C++']
Odebírání všech prvků ze seznamu pomocí metody clear()
Co když potřebujete odstranit všechny prvky ze seznamu? Můžete procházet seznam a odstraňovat prvky jeden po druhém pomocí metody remove()
, jak je ukázáno níže:
for lang in pgm_langs:
pgm_langs.remove(lang)
Existuje ale lepší způsob? Ano, použijte metodu clear()
. Zavoláním metody clear()
na seznamu pgm_langs
odstraníme všechny prvky a pgm_langs
se stane prázdným seznamem.
pgm_langs.clear()
print(pgm_langs)
# Output: []
Přehled metod pro práci se seznamy v Pythonu
Pojďme si rychle shrnout jednotlivé metody pro práci se seznamy a jejich syntaxi:
Metoda seznamu | Syntaxe | Popis |
insert() |
list1.insert(index, elt) |
Vloží prvek elt na daný index v list1 |
append() |
list1.append(elt) |
Přidá prvek elt na konec list1 |
extend() |
list1.extend(list2) |
Přidá prvky z list2 na konec list1 |
sort() |
list1.sort() |
Seřadí list1 přímo na místě |
reverse() |
list1.reverse() |
Obrátí pořadí prvků v list1 přímo na místě |
copy() |
list1.copy() |
Vrátí mělkou kopii list1 |
count() |
list1.count(elt) |
Vrátí počet výskytů prvku elt v list1 |
index() |
list1.index(elt) |
Vrátí index prvního výskytu prvku elt v list1 |
pop() |
list1.pop(index) |
Odstraní prvek na daném index a vrátí ho |
remove() |
list1.remove(elt) |
Odebere první výskyt prvku elt ze list1 |
clear() |
list1.clear() |
Odstraní všechny prvky z list1 |
Závěr
Doufám, že vám tento návod pomohl pochopit, jak pracovat s nejčastěji používanými metodami pro seznamy v Pythonu. Dalším krokem může být studium n-tic a rozdílů mezi seznamy a n-ticemi.
Pokud se učíte programovat v Pythonu, můžete se podívat na seznam doporučených výukových zdrojů pro začátečníky.