Pythonで二次元配列の中の各要素のn番目だけを取り出して、要素として並べたい

投稿者: Anonymous
a = [[1,2,3],[4,5,6],[7,8,9],[10,11,12]]

というような形式のデータの中の各要素の2番目のみを取り出して

b = [2,5,8,11]

という形で扱いたいのですがどの様に記述すれば良いですか?

この様な入れ子の配列を二次元配列と呼ぶという所までは検索で辿り着いたのですが、一度の記述で済む方法が分からず、現在一つ一つ要素を取り出して

b = [a[0][1],a[1][1],a[2][1],a[3][1]]

の様に(数十個)記述しております。

(for文を使って取り出そうともしてみたのですが、printしてみると一つ一つバラバラになって配列を作れなかったので断念しました…)

初学者ゆえ初歩的な質問で気分を害されましたら申し訳ございません。
宜しくお願い致します。

解決

以下のようにリストの内包表記を利用するとシンプルに実現できます。

a = [[1,2,3],[4,5,6],[7,8,9],[10,11,12]]
b = [x[1] for x in a]
print(b) #=> [2, 5, 8, 11]

上記サイトに記載されているように、for文による方式やmapによる方式でも実現できますが、リストの内包表記がよりシンプルです。

参考: for文の例

a = [[1,2,3],[4,5,6],[7,8,9],[10,11,12]]
b = []
for x in a:
    b.append(x[1])

print(b)  #=> [2, 5, 8, 11]

参考: mapの例

a = [[1,2,3],[4,5,6],[7,8,9],[10,11,12]]
b = list(map(lambda x: x[1], a))
print(b) #=> [2, 5, 8, 11]
回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *