Взять определенный элемент из списка в списке

a = [[10, 20, 30], [13223, 56, 48996], [156, 684, 9686]]
print(a[:][1])

Выдаст: [13223, 56, 48996]

Нужно: [20, 56, 684]

То есть, выбрать первый элемент из всех списков максимально быстрым способом. И как это можно реализовать для numpy array?


Ответы (3 шт):

Автор решения: mrBars1k

Я не эксперт, умею только костыльные решения делать, поэтому такой и предлагаю:

a = [[10, 20, 30], [13223, 56, 48996], [156, 684, 9686]]
n = 0
for i in range(3):
    print(a[n][1])
    n = n + 1
→ Ссылка
Автор решения: Dmitry

List comprehensions вам поможет

def take_items_by_index(list_, index_):
    return [i[index_] for i in list_] 

Пример

a = [[10, 20, 30], [13223, 56, 48996], [156, 684, 9686]]
take_items_by_index(a, 0)
# OUT 
# [10, 13223, 156]
take_items_by_index(a, 1) 
# OUT 
# [20, 56, 684]
take_items_by_index(a, 2) 
# OUT 
# [30, 48996, 9686]
→ Ссылка
Автор решения: SergFSM

есть еще способ:

a = [[10, 20, 30], [13223, 56, 48996], [156, 684, 9686]]

list(zip(*a))[1]  # (20, 56, 684)

если вложенные списки могут быть разной длины, то вместо zip берем zip_longest из библиотеки itertools

→ Ссылка