Python - wyłuskanie listy z listy wielowymiarowej

Python - wyłuskanie listy z listy wielowymiarowej
CG
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 3 lata
  • Postów:76
0

Hej!
Mam pewien problem z listami w pythonie.
Mam przykładową tablicę wielowymiarową:

Kopiuj
a = [
[[1,1,1],[2,2,2],[3,3,3],[4,4,4]],
[[1,1,1],[2,2,2],[3,3,3],[4,4,4]],
[[1,1,1],[2,2,2],[3,3,3],[4,4,4]],
[[1,1,1],[2,2,2],[3,3,3],[4,4,4]]
]

Potrzebuję wyłuskać np. po ostatnim elemencie z każdej najbardziej zagnieżdżonej listy a więc:

Kopiuj
b = [
[1,2,3,4],
[1,2,3,4],
[1,2,3,4],
[1,2,3,4]
]

Czy da się to zrobić bez przechodzenia po elementach za pomocą forów?
Jakaś funkcja z numpy lub nie wiem użycie zapisu z dwukropkiem( w sensie "a[:]")?

Pozdrawiam serdecznie!

EDIT:
Przez pośpiech nie zawarłem jednej zagnieżdżonej pętli

edytowany 1x, ostatnio: CzakuGim
superdurszlak
  • Rejestracja:prawie 7 lat
  • Ostatnio:około 22 godziny
  • Lokalizacja:Kraków
  • Postów:2000
2

Jeśli pracujesz na listach, to możesz zrobić jakieś proste list comprehension albo map (czyli w sumie zamaskować pętlę):

Kopiuj
c = [x[-1] for x in b]

jakbyś zrobić z tego numpy.ndarray to mógłbyś to zrobić przez indeksowanie / slicing itp


edytowany 1x, ostatnio: superdurszlak
CG
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 3 lata
  • Postów:76
0

Edytowałem post,
w takim wypadku wydaje się, że powinienem rozszerzyć Twoją listę składaną poprzez zagnieżdżenie.
To rozwiazuje problem:

Kopiuj
c = [[x[-1] for x in y] for y in a]

Dzięki za pomoc :)
Naprowadziłeś mnie :)

edytowany 3x, ostatnio: CzakuGim
JC
  • Rejestracja:około 6 lat
  • Ostatnio:prawie 5 lat
  • Postów:11
1
CzakuGim napisał(a):

Edytowałem post,
w takim wypadku wydaje się, że powinienem rozszerzyć Twoją listę składaną poprzez zagnieżdżenie.
To rozwiazuje problem:

Kopiuj
c = [[x[-1] for x in y] for y in a]

Dobrze, tylko zły nawias

Kopiuj
c = [[x[-1] for x in y] for y in a]
CG
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 3 lata
  • Postów:76
0
JustCuzICan napisał(a):
CzakuGim napisał(a):

Edytowałem post,
w takim wypadku wydaje się, że powinienem rozszerzyć Twoją listę składaną poprzez zagnieżdżenie.
To rozwiazuje problem:

Kopiuj
c = [[x[-1] for x in y] for y in a]

Dobrze, tylko zły nawias

Kopiuj
c = [[x[-1] for x in y] for y in a]

Taaak, zdążyłem się zorientować :D

Dla jasności, użyłem:

Kopiuj
c = [(x[-1] for x in y) for y in a]

co oczywiście było błędne.

Ale dzięki!

edytowany 1x, ostatnio: CzakuGim
superdurszlak
  • Rejestracja:prawie 7 lat
  • Ostatnio:około 22 godziny
  • Lokalizacja:Kraków
  • Postów:2000
1

Jak zaczynasz wchodzić w wielowymiarowe tablice, to może lepiej będzie jeśli jednak przejdziesz z tym do numpy - jak wymiary zaczynają się mnożyć, to coraz łatwiej sobie nababrać i nagmatwać - poza tym jeśli gdzieś się trafi np pusta pod-lista to rozwiązanie się sypnie albo będzie wymagało dodatkowego sprawdzenia i znów kod się komplikuje ;)


CG
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 3 lata
  • Postów:76
0

Będę pamiętać na przyszłość :)
Dzięki!

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.