Útmutató a lista egyesítéséhez és a listák listájához Pythonban

Egy 2D tömb 1D tömbbé alakítását lapításnak nevezzük. Számos megközelítés létezik a probléma megoldására.

Ezek közül néhányat megvizsgálunk ebben az oktatóanyagban.

Lássunk egy példát.

Bemenet

[[1, 2, 3], [4, 5], [6, 7, 8, 9, 10]]

Kimenet

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

#1. Hurkok

A probléma megoldásának legáltalánosabb módja a hurkok használata. Szerintem a legtöbben már megkaptad. Lássuk a probléma megoldásának lépéseit hurkok használatával.

  • Inicializálja a listák listáját áladatokkal, és nevezze el adatnak.
  • Most inicializáljon egy üres listát flat_list néven.
  • Ismételje meg az adatokat.
    • Csomagolja ki az összes elemet az aktuális listából.
    • Adja hozzá őket a flat_list-hez a lista hozzáfűzési módszerrel.
  • Nyomtassa ki az eredményt.

Lásd alább a probléma kódját.

# initializing the data and an empty list
data = [[1, 2, 3], [4, 5], [6, 7, 8, 9, 10]]
flat_list = []

# iterating over the data
for item in data:
    # appending elements to the flat_list
    flat_list += item

# printing the resultantn flat_list
print(flat_list)

Az összefűzési operátor helyett egy másik ciklust is használhat az allista elemek hozzáadásához a flat_list listához. A ciklusok helyett használhatunk listaértelmezéseket is.

  Hogyan ellenőrizhető a merevlemez állapota Linuxon

Mindkettő ugyanazt a munkát végzi. Lássuk a probléma megoldásának következő módját.

#2. Itertools – Lánc

Az itertools beépített moduljából egy lánc nevű metódust fogjuk használni.

A metóduslánc iterál minden egyes allistán, és addig adja vissza az elemeket, amíg nincs benne allista. Egy iterálhatót ad vissza, amelyet listává kell alakítanunk.

Lássuk a probléma megoldásának lépéseit.

  • Inicializálja a listák listáját áladatokkal, és nevezze el adatnak.
  • Szerezd meg a kiegyenlített iterálhatóságot az itertools.chain(*data) segítségével.
  • Alakítsa át az eredményül kapott iterált listává.
  • Nyomtassa ki a kiegyenlített listát.

Az alábbi részletben végignézheti a kódot.

# importing the module
import itertools

# initializing the data
data = [[1, 2, 3], [4, 5], [6, 7, 8, 9, 10]]

# flattening the list and storing the result
flat_list = itertools.chain(*data)

# converting iterable to list and printing
print(list(flat_list))

#3. Többszintű listák simítása

Láttuk, hogyan lehet laposítani a listák listáját. A fenti módszerek, amelyeket a lista egyesítésére tárgyaltunk, nem működnek többszintű listák esetén. Lássunk egy példát.

  Mit jelent a „felskálázás” egy TV-n, és hogyan működik?

Bemenet

[1, [2, 3, [4, 5]], 6, [[7], [8, 9]]]

Kimenet

[1, 2, 3, 4, 5, 6, 7, 8, 9]

Mivel a program előtt nem ismerjük a listák mélységét, ezért a feladat megoldásához rekurziót kell használnunk.

  • Inicializálja az adatokat a példában látható módon, és nevezze el adatnak.
  • Inicializálja a flat_list nevű üres listát.
  • Írjon egy flatten_list nevű függvényt.
    • Ismételje meg az adott lista elemeit.
    • Ha az elem egy lista, akkor ismételten hívja meg ugyanazt a függvényt.
    • Ha az elem nem lista, akkor fűzze hozzá az elemet a flat_list-hez.
  • Hívja meg a függvényt adatokkal.
  • A függvény kitölti a flat_list lista összes elemét.
  • Nyomtassa ki a flat_list-ot a kimenet ellenőrzéséhez.
  A Nokia kiadta az úttörő Z Launchert Androidra

Fú! sok lépés a kódoláshoz. Ne aggódj. A fenti utasítások kóddá alakítása nem tart tovább percnél.

# initializing the data and empty list
data = [1, [2, 3, [4, 5]], 6, [[7], [8, 9]]]
flat_list = []

# function
def flatten_list(data):
    # iterating over the data
    for element in data:
        # checking for list
        if type(element) == list:
            # calling the same function with current element as new argument
            flatten_list(element)
        else:
            flat_list.append(element)

# flattening the given list
flatten_list(data)

# printing the flat_list
print(flat_list)

Ne feledje, hogy nem konvertáltuk a meglévő listát. Ehelyett egy új listát hoztunk létre az adott listaelemmel.

Következtetés

Remélem tetszett az oktatóanyag. Sok más mód is lehet a lista egyesítésére Pythonban, de úgy éreztem, a fentiek a legegyszerűbbek.

Boldog kódolást 🙂