Rokasgrāmata Python saraksta saplacināšanai un sarakstu sarakstam

2D masīva pārveidošanu 1D masīvā sauc par saplacināšanu. Ir daudzas pieejas problēmas risināšanai.

Mēs izpētīsim dažus no tiem šajā apmācībā.

Apskatīsim piemēru.

Ievade

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

Izvade

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

#1. Cilpas

Visizplatītākais veids, kā atrisināt problēmu, ir izmantot cilpas. Es domāju, ka lielākā daļa no jums to jau ir sapratuši. Apskatīsim darbības, lai atrisinātu problēmu, izmantojot cilpas.

  • Inicializējiet sarakstu sarakstu ar fiktīviem datiem un nosauciet to kā datus.
  • Tagad inicializējiet tukšu sarakstu ar nosaukumu flat_list.
  • Atkārtojiet datus.
    • Izpakojiet visus elementus no pašreizējā saraksta.
    • Pievienojiet tos sarakstam flat_list, izmantojot saraksta pievienošanas metodi.
  • Izdrukājiet rezultātu.

Tālāk skatiet problēmas kodu.

# 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)

Varat izmantot citu cilpu, lai pievienotu apakšsaraksta elementus sarakstam flat_list, nevis savienošanas operatoru. Cilpu vietā varam izmantot arī saraksta izpratni.

  7 labākā AntiTrack programmatūra labākai tiešsaistes privātumam

Abi dara vienu un to pašu darbu. Apskatīsim nākamo problēmas risināšanas veidu.

#2. Itertools — ķēde

Mēs izmantosim metodi, ko sauc par ķēdi no itertools iebūvētā moduļa.

Metodes ķēde atkārto katru apakšsarakstu un atgriež elementus, līdz tajā vairs nav neviena apakšsaraksta. Tas atgriež atkārtojamību, kas mums ir jāpārvērš sarakstā.

Apskatīsim problēmas risināšanas darbības.

  • Inicializējiet sarakstu sarakstu ar fiktīviem datiem un nosauciet to kā datus.
  • Iegūstiet saplacināto iterējamo versiju, izmantojot itertools.chain(*data).
  • Konvertējiet iegūto iterable sarakstā.
  • Izdrukājiet saplacināto sarakstu.

Tālāk esošajā fragmentā varat iet cauri kodam.

# 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. Saplaciniet daudzlīmeņu sarakstus

Mēs esam redzējuši, kā saplacināt sarakstu sarakstu. Iepriekš minētās metodes, par kurām mēs runājām, lai saplacinātu sarakstu, nedarbosies daudzlīmeņu sarakstiem. Apskatīsim piemēru.

  Kā vietnē pievienot sociālo pierādījumu, lai palielinātu reklāmguvumu skaitu?

Ievade

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

Izvade

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

Tā kā mēs nezinām sarakstu dziļumu pirms programmas, mums ir jāizmanto rekursija, lai atrisinātu problēmu.

  • Inicializējiet datus, kā parādīts piemērā, un nosauciet tos kā datus.
  • Inicializējiet tukšu sarakstu ar nosaukumu flat_list.
  • Uzrakstiet funkciju flatten_list.
    • Atkārtojiet dotā saraksta elementus.
    • Ja elements ir saraksts, atkārtoti izsauciet to pašu funkciju.
    • Ja elements nav saraksts, pievienojiet elementu flat_list.
  • Izsaukt funkciju ar datiem.
  • Funkcija aizpildīs visus flat_list saraksta elementus.
  • Izdrukājiet flat_list, lai pārbaudītu izvadi.

Fu! kodēšanai jāveic daudz darbību. Neuztraucieties. Iepriekš minēto paziņojumu konvertēšana kodā neaizņems vairāk par minūtēm.

# 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)

Atcerieties, ka mēs nekonvertējām esošo sarakstu. Tā vietā esam izveidojuši jaunu sarakstu ar norādīto saraksta elementu.

  Kas ir malu skaitļošana un kāpēc tas ir svarīgi?

Secinājums

Cerams, ka jums patika apmācība. Varētu būt daudz citu veidu, kā Python sarakstu saplacināt, taču man šķita, ka iepriekš minētie, iespējams, ir vienkāršākie.

Laimīgu kodēšanu 🙂