Взять определенный элемент из списка в списке
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