Î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.
- Nu am dat downvote, dar s-ar putea să vă lipsească câteva virgule. – > Por Rohit.
Î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)
- Am constatat că aceasta este cea mai simplă soluție. Vă mulțumim pentru ajutor! – > .
Încearcă asta:
locations = [[]]
row = locations[0]
row.append([x, y])
Î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]]
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]]]
- Vă mulțumim pentru ajutor! – > .