2013-05-29 1 views
1

Это должен быть очень простой вопрос, поэтому, пожалуйста, несите меня. У меня есть список списков, как этотКак получить доступ к n-му элементу из каждого списка в другом списке?

l = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]] 

Я хочу, чтобы получить доступ к второму значению в каждом списке внутри внешнего списка в другой список

[2, 5, 8, 11] 

Есть один шаг способ сделать это? Запрограммированный в Matlab довольно много раньше, я попытался l[:][1] но возвращает мне [4, 5, 6]

ответ

5

Используйте список понимание:

>>> lis = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]] 
>>> [ x[1] for x in lis] 
[2, 5, 8, 11] 

Другой способ с использованием operator.itemgetter:

>>> from operator import itemgetter 
>>> map(itemgetter(1), lis) 
[2, 5, 8, 11] 
+1

Ударьте меня на пару секунд. Хороший. :) –

0
>>> L = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]] 
>>> [item[1] for item in L] 
[2, 5, 8, 11] 
2

С вами Вспомните Matlab, я расскажу о том, как это сделать. Это может быть на самом деле ближе к тому, что вы хотите, и если вы собираетесь использовать Matlab как вещи много, то лучше начать использовать NumPy рано:

import numpy 
a = numpy.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]) 
>>> a[:,1] 
array([ 2, 5, 8, 11]) 

Так что да, есть шаг преобразования в numpy arrays extra, но, возможно, вы хотите продолжить работу с массивом, вместо использования списка, поскольку он предлагает множество дополнительных функций.

 Смежные вопросы

  • Нет связанных вопросов^_^