Jak pole a seznamy fungují v Pythonu

Jak pole a seznamy fungují v Pythonu

Pole a seznamy jsou jedny z nejužitečnějších datových struktur v programování - i když je jen málo lidí skutečně využívá k plnému potenciálu. Dnes vám povím základy, spolu s několika jednoduchými příklady Pythonu.





Předpoklady

Abyste se naučili tyto pojmy, není toho mnoho, co byste předem museli vědět. Základní znalost programovacích paradigmat a Pythonu bude užitečná, ale není nutná. Přečtěte si naše základní příklady Pythonu pokud nevíte, kde začít. Pokud si myslíte, že je Python zbytečný jazyk, podívejte se na naše důvody, proč tomu tak není.





Následující základní myšlenky lze použít na jakýkoli jazyk, ale ukážu příklady v Pythonu. Je to snadno se učící jazyk a poskytuje vynikající platformu pro pochopení toho, co se děje. Kromě toho, tutorialspoint.com poskytuje vynikající online tlumočník Pythonu - Python nemusíte ani instalovat, pokud nechcete (pokud ano, podívejte se na náš průvodce virtuálním prostředím).





Datové struktury

Co je a datová struktura ? Na své nejzákladnější úrovni je datová struktura způsobem efektivního ukládání dat. Je snadné se nechat zmást, protože datové struktury nejsou typy dat . Datové typy sdělují kompilátoru (nebo v případě Pythonu tlumočníkovi), jak mají být data použita. Datové struktury specifikují operace, které lze provádět, a často implementují konkrétní pravidla a předpisy.

Možná jste o některých slyšeli lineární datové typy (prvky jsou sekvenční):



  • Pole
  • Matice
  • Vyhledávací tabulka

Podobně, seznamy často obsahují pravidla a metody k regulaci jejich fungování. Některé běžné seznamy jsou:

  • Spojový seznam
  • Dvojitě propojený seznam
  • Seznam polí nebo Dynamické pole

Existuje nepřeberné množství různých datových struktur. Možná jste už slyšeli binární stromy , grafy , nebo hashe . Dnes budu diskutovat o základech, ale možná se budete chtít dozvědět více, až vám bude dobře.





Pole

Začněme od začátku. Pole je jednoduchá sbírka (souvisejících) hodnot. Tyto hodnoty se nazývají prvky. Obvykle to může být jakýkoli typ dat, který se vám líbí, včetně objektů nebo jiných seznamů! Hlavní výhradou pro pole je, že všechna data musí být stejná - nelze ukládat smíšené řetězce a celá čísla. Vy téměř vždy musíte určit, kolik prvků chcete uložit. Variabilní velikost nebo dynamická pole existují, ale pole s pevnou délkou jsou pro začátek jednodušší.

Python věci poněkud komplikuje. Velmi vám to usnadňuje práci, ale ne vždy se drží striktních definic datových struktur. Většina objektů v Pythonu jsou obvykle seznamy, takže vytvoření pole je ve skutečnosti více práce. Zde je nějaký startovací kód:





from array import array
numbers = array('i', [2, 4, 6, 8])
print(numbers[0])

První řádek importuje soubor pole modul - to je nutné pro práci s poli. Druhý řádek vytvoří nové pole s názvem čísla a inicializuje jej s hodnotami 2, 4, 6 a 8. Každému prvku je přiřazeno an celé číslo hodnota zvaná a klíč nebo index . Klíče začínají na nula , tak čísla [0] přistupuje k prvnímu prvku ( 2 ):

Možná si říkáte, co 'já' se používá pro. Toto je a typový kód to říká Pythonu, že pole bude ukládat celá čísla. Takové věci by v Pythonu normálně nebyly potřeba (bylo by to považováno za 'nepytonické'). Důvod je jednoduchý. Pole v Pythonu jsou velmi tenkou obálkou na podkladových C polích vašeho operačního systému. To znamená, že jsou rychlí a stabilní, ale nemusí vždy dodržovat syntaxi Pythonu.

tlačítko napájení pro Raspberry Pi 3

Do těchto polí nelze ukládat smíšené typy. Řekněme, že jste chtěli uložit řetězec 'makeuseof.com':

numbers = array('i', [2, 4, 6, 'makeuseof.com'])

To nebude povoleno a vyvolá výjimku:

Zde je návod, jak můžete vytisknout všechny prvky:

print(numbers)

Tato metoda přístupu k prvkům pole funguje dobře a je ideální pro správný úkol. K čemu to není dobré, je přístup k celému poli. Programátoři jsou ze své podstaty líní, takže s radostí napíšu více, lepší kód, pokud to znamená, že mohu usnadnit údržbu a omezit úsilí při kopírování a vkládání.

Každý programovací jazyk bude implementovat nějakou smyčku, která je ideální pro iteraci (smyčku) nad prvky seznamu. Nejběžnějšími smyčkami jsou zatímco a pro . Python dělá věci ještě jednodušší poskytnutím souboru pro v smyčka:

for number in numbers:
print(number)

Všimněte si, jak jste nemuseli přistupovat k prvkům podle jejich klíče. Toto je mnohem lepší způsob práce s polem. Alternativní způsob iterace seznamu je pomocí pro smyčka:

for i in range(len(numbers)):
print(numbers[i])

To dělá přesně to samé jako předchozí příklad, i když jste museli zadat počet prvků v poli ( jen (cars) ), spolu s procházením jako klíč k poli. To je téměř přesně ten kód pro v smyčky běží. Tento způsob poskytuje o něco větší flexibilitu a je o něco rychlejší (ačkoli pro v smyčky jsou více než dostatečně rychlé většina času.)

Seznamy

Nyní, když víte, jak pole fungují, podívejme se na seznam. Někdy to může být matoucí, protože lidé používají zaměnitelně jinou terminologii a seznamy jsou pole ... něco jako.

Seznam je speciální typ pole. Největší rozdíl je v tom, že seznamy mohou obsahovat smíšený typy (pamatujte, pole musí obsahovat prvky stejného typu). Seznamy jsou v Pythonu velmi snadné:

proč jsou sociální média pro společnost dobrá
cars = ['Ford', 'Austin', 'Lancia']

Všimněte si, jak nemusíte importovat soubor pole modul?

Tato syntaxe deklaruje seznam s názvem auta. V hranatých závorkách je deklarován každý prvek seznamu. Každý prvek je oddělen čárkou a protože každý prvek je řetězec, deklarujete je v uvozovkách. Python ví, že se jedná o objekt, takže tisk příkaz vygeneruje obsah seznamu:

print(cars)

Stejně jako u pole můžete prvky seznamu iterovat pomocí smyček:

for car in cars:
print(car)

Skutečným party trikem seznamů je jejich smíšený typ. Pokračujte a přidejte další data:

cars = ['Ford', 'Austin', 'Lancia', 1, 0.56]

Pro Python to není žádný problém - nevyvolalo to ani výjimku:

Přidání nových prvků do seznamu je snadné (něco s poli není možné):

cars = ['Ford', 'Austin']
print(cars)
cars.append('Lancia')
print(cars)

Můžete také sloučit dva seznamy do jednoho:

cars = ['Ford', 'Austin']
print(cars)
other_cars = ['Lotus', 'Lancia']
cars.extend(other_cars)
print(cars)

Stejně snadné je odebrání prvků pomocí odstranit syntax:

cars = ['Ford', 'Austin', 'Lotus', 'Lancia']
print(cars)
cars.remove('Ford')
print(cars)

To pokrývá základy seznamů a polí v Pythonu. Proč neuvažovat o projektu kódování, jako je čtení a zápis do Tabulek Google, čtení dat json. Možná byste mohli své nové dovednosti použít k výrobě některých vlastní tlačítka zkratek . Přestože jde o jiný programovací jazyk, tyto zásady pole stále platí.

Podíl Podíl tweet E-mailem 5 tipů, jak dobít své stroje VirtualBox Linux

Jste unaveni špatným výkonem, který nabízejí virtuální stroje? Zde je to, co byste měli udělat, abyste zvýšili výkon svého VirtualBoxu.

Číst dále
Související témata
  • Programování
  • Programování
  • Krajta
O autorovi Joe Coburn(136 publikovaných článků)

Joe je absolventem informatiky na University of Lincoln, UK. Je profesionálním vývojářem softwaru, a když zrovna neletí drony nebo nepíše hudbu, často ho lze zastihnout při fotografování nebo produkci videí.

Více od Joe Coburn

Přihlaste se k odběru našeho zpravodaje

Připojte se k našemu zpravodaji a získejte technické tipy, recenze, bezplatné elektronické knihy a exkluzivní nabídky!

Kliknutím sem se přihlásíte k odběru