ESP32 / ESP8266 MicroPython: Práce se seznamy

Níže uvedený článek je článek přeložený ze stránek dfrobot.com.

Cílem tohoto návodu je vysvětlit, jak používat seznamy (anglicky list) v MicroPythonu. Seznamy jsou v Pythonu velice důležité datové struktury, které byly přeneseny i do MicroPythonu. Cílem není projít všechny dostupné funkce tohoto datového typu, ale pouze ukázat jeho hlavní výhody a možnosti.

Všechny články o MicroPython a ESP32/ESP8266 najdete na https://chiptron.cz/articles.php?cat_id=23

Tento návod byl testován na ESP32-WROOM-32 a ESP8266 pomocí nástrojů uPyCraft a MicroPython IDE. Návod na zprovoznění těchto zařízení a nástrojů naleznete v předchozích příspěvcích. Nejjednodušší způsob, jak projít návodem, je posílat příkazy přímo do konzole.

Vytváření seznamů:

Pro vytvoření není nutné volat konstruktor. Seznam se vytvoří umístěním prvků (čísla, písmena atd.) mezi hranaté závorky (viz následující příkazy).

intList = [1,2,3,4,5]

print(intList)

stringList = [‚a‘,’b‘,’c‘,’d‘,’e‘]

print(stringList)

type(stringList)

Posledním příkazem je kontrola datového typu seznamu s čísly a seznamu s textovými řetězci. Vidíme, že je v obou případech datový typ list (seznam).

Obrázek 1 – Ověření datového typu

Velkou výhodou seznamů je, že můžeme mít v rámci jednoho seznamu více datových typů (viz následující příkazy a obr. 2).
objectList = [1, 2, ‚a‘, ‚b‘, ‚c‘, [ 1, 2, 3] ]

print (objectList)

type(objectList)

Obrázek 2 – Výstup z konzole

Poslední možností při vytváření seznamů je vytvoření prázdného seznamu pomocí prázdných hranatých závorek. Taková možnost se může hodit v okamžiku, kdy chceme postupně do seznamu přidávat prvky a je potřeba si proměnnou nejprve vytvořit.
emptyList = []

print (emptyList)

Přístup k prvkům v seznamu:

Pro přístup ke konkrétnímu prvku použijeme opět hranaté závorky. Je nutné si dát pozor na indexaci prvků od 0. Takto například přistoupíme k prvnímu a druhému prvku.
myList = [1,2,3]

print (myList[0])

print (myList[1])

K prvkům není nutné přistupovat jednotlivě. Můžeme také přistoupit k prvním třem prvkům v jednom příkazu pomocí použití indexu 0:2. Tento index se interně promění ve 3 indexy – 0,1,2. Je tedy možné vidět, že obecná syntaxe je začátek:konec.
print (myList[0:3])

type(myList[0])

type(myList[0:3])

Pro test si vypíšeme i datový typ, ze kterého je možné si všimnout rozdílu při indexaci jednoho prvku a více prvků zároveň.

Obrázek 3 – Indexace více prvků

Pomocí tohoto způsobu indexace můžeme také určit pouze jeden z limitů a druhý se doplní automaticky podle délky pole. Pokud tedy například uvedu 1: znamená to všechny prvky od druhého (indexace od nuly) do konce.
print(myList[0:])

print(myList[:3])

print(myList[1:])

Obrázek 4 – Indexace více prvků jen s jedním indexem

Dalším (a často používaným) způsobem indexace je pomocí záporných indexů. Záporné číslo znamená počet prvků od konce pole. Prvek s indexem -1 je posledním prvkem pole.
print(myList[-1])

print(myList[-2])

print(myList[-3])

Obrázek 5 – Indexace od konce

Jednotlivé prvky můžeme samozřejmě nahrazovat novými hodnotami. Nové hodnoty mohou mít i jiné datové typy, než má prvek předchozí.
testList = [‚a‘, ‚b‘, ‚c‘]

print(testList)

testList[0] = 1

testList[1] = 2

testList[2] = 3

print(testList)

Obrázek 6 – Přiřazení do prvků seznamu

Zajímavé metody a funkce:

Asi nejčastěji používanou metodou je přidání prvku na konec pole pomocí funkce append.
testList = [‚a‘, ‚b‘, ‚c‘]

testList.append(‚d‘)

print(testList)

Pokud bychom chtěli spojit dva seznamy, může se hodit funkce extend.
toAppendList = [‚e‘, ‚f‘]

testList.extend(toAppendList)

print(testList)

Někdy je také zapotřebí vložit prvek na nějaký konkrétní index. Používá se na to funkce insert, jejíž parametry jsou index a hodnota.
myList = [1,3]

myList.insert(1,2)

print(myList)

Pro odstranění prvku se může hodit funkce remove s parametrem indexu prvku, který chceme odstranit.
myList = [1,2,3]

myList.remove(1)

print(myList)

Obrázek 7 – Pár zajímavých funkcí

Smazání prvku můžeme také provést pomocí funkce del. Tato funkce, ale není vestavěna přímo v seznamu a tudíž se syntaxe mírně liší. Pokud bychom chtěli smazat prvek na konkrétním místě a zároveň ho uložit do proměnné, tak funkce pop je přesně tím, co hledáme. Parametrem je opět index prvku.
intList = [1,2,3,4]

del intList[0]

print(intList)

popedElement = intList.pop(0)

print(popedElement)

Pro zjištění délky seznamu se obvykle používá funkce len.
testList = [1,2,3,4,5,6,7,8,9,10]

print(len(testList))

Obrázek 8 – Pár zajímavých funkcí

Pro spojení seznamů jsme použili funkci extend, ale pokud bychom chtěli dva seznamy uložit jako jeden do třetího, můžeme použít pouze +.
myList = [1,2,3]

concatList = [4,5]

finalList = myList + concatList

print(finalList)

Pokud bychom chtěli jeden seznam umístit několikrát za sebe, může se pro to hodit *. Využití to má při inicializaci větších seznamů.
myList = [0]

print(myList * 10)

Můžeme také snadno zkontrolovat přítomnost nějakého prvku v poli pomocí PRVEK in NÁZEV_SEZNAMU.
myList = [‚a‘,’b‘,’c‘]

print(‚a‘ in myList)

print(‚d‘ in myList)

Obrázek 9 – Pár zajímavých operátorů

Iterace seznamem:

Pokud potřebujeme projít všechny prvky pole a nechceme uvádět indexy, tak je možné použít následující syntaxi cyklu for, kde se v každém kroku uloží prvek ze seznamu do proměnné element.
myList = [‚a‘, ‚b‘, ‚c‘, ‚d‘]

for element in myList:

print(element)

Obrázek 10 – Iterace seznamem

Závěrem je jen nutné říci, že v tomto návodu bylo pokryto jen pár základních funkcí použitelných v kombinaci se seznamy. Existuje mnoho dalších, které práci se seznamy ještě více usnadní.

Sdílejte článek:
Ukaž světu,
že jsi Maker!
Koupit tričko
Kafe pro Chiptrona
Dodej energii dalšímu článku

Související články

Níže uvedený článek je článek přeložený ze stránek dfrobot.

Níže uvedený článek je článek přeložený ze stránek dfrobot.

Cílem tohoto návodu je ukázat, jak lze používat filtry na seznamy.

Níže uvedený článek je článek přeložený ze stránek dfrobot.

Nastavení sériového připojení k ESP32 v Putty — konfigurace pro MicroPython REPL

Dva způsoby, jak nahrát MicroPython na ESP32 — jednoduše přes Thonny IDE nebo ručně přes esptool. První blikající LEDka do pěti minut.

V Octopus LAB (sledujte nás na FB) jsme se poslední dobou hodně soustředili na ESP32 ve spojení s Micropythonem.

Trendy