Python adaugă liste în liste (Programare, Python, Lista, Matrix, Append)

DGDD a intrebat.

Încerc să scriu o funcție care trece printr-o matrice. Atunci când un criteriu este îndeplinit, își amintește locația.

Încep cu o listă goală:

locations = []

Pe măsură ce funcția trece prin rânduri, adaug coordonatele folosind:

locations.append(x)
locations.append(y)

La sfârșitul funcției, lista arată astfel:

locations = [xyxyxyxyxyxy]

Întrebarea mea este:

Folosind „append”, este posibil să fac lista astfel încât să urmeze acest format?:

locations = [[[xy][xy][xy]][[xy][xy][xy]]]

în care prima paranteză simbolizează locațiile unui rând din matrice, iar fiecare locație se află în propria paranteză în cadrul rândului?

În acest exemplu, prima paranteză reprezintă primul rând cu un total de 3 coordonate, apoi o a doua paranteză simbolizează al doilea rând cu alte 3 coordonate.

Comentarii

  • Nu am dat downvote, dar s-ar putea să vă lipsească câteva virgule. –  > Por Rohit.
4 răspunsuri
hankd

În loc de

locations.append(x)

Puteți face

locations.append([x])

Acest lucru va adăuga o listă care conține x.

Deci, pentru a face ceea ce doriți, construiți lista pe care doriți să o adăugați, apoi adăugați acea listă (în loc să adăugați doar valorile). Ceva de genul:

 ##Some loop to go through rows
    row = []
    ##Some loop structure
        row.append([x,y])
    locations.append(row)

Comentarii

  • Am constatat că aceasta este cea mai simplă soluție. Vă mulțumim pentru ajutor! –  > Por DGDD.
Mark Ransom

Încearcă asta:

locations = [[]]
row = locations[0]
row.append([x, y])

Christian

Încearcă ceva de genul:

def f(n_rows, n_cols):
    locations = [] # Empty list
    for row in range(n_rows):
        locations.append([]) # 'Create' new row
        for col in range(n_cols):
            locations[row].append([x, y])
    return locations

Test

n_rows = 3
n_cols = 3
locations = f(n_rows, n_cols)
for e in locations:
    print
    print e

>>> 

[[0, 0], [0, 1], [0, 2]]

[[1, 0], [1, 1], [1, 2]]

[[2, 0], [2, 1], [2, 2]]

furas

exemplu simplu

locations = []

for x in range(3):
    row = []
    for y in range(3):
        row.append([x,y])
    locations.append(row)

print locations

rezultat:

[[[0, 0], [0, 1], [0, 2]], [[1, 0], [1, 1], [1, 2]], [[2, 0], [2, 1], [2, 2]]]

Comentarii

  • Vă mulțumim pentru ajutor! –  > Por DGDD.