CSV から 1次元リストを読み込んだと思ったらなぜか 2次元だった:
[[1, 2, 3, 4, 5]]
これを 1次元化したい:
[1, 2, 3, 4, 5]
とりあえず,最小コーディング労力で 1次元化したかった自分的に最良の方法は「元リストの第一要素を新変数に格納する」:
>>> ls = [[1, 2, 3, 4, 5]]
>>> ls_new = ls[0]
>>> print(ls_new)
[1, 2, 3, 4, 5]
こんなコードを記事にするのは申し訳ないと思うのですが,作業中は心理的盲点?をつかれたのか,若干ハマってしまったので,備忘録的に書き残します
ハマってしまった一因は,
[[1, 2, 3], [4, 5]]
のような「普通の」2次元リストを 1次元化する無数の方法の中から,最小コーディング労力のものを探そうとしてしまったことでした.教訓があるとすれば「ググるだけでなく自分でも考えよう」でしょうか
ちなみに上記のような「普通の」2次元リストの場合,最小コーディング労力という観点から,
「元 2次元リストで 2重に iterate し,要素を新 1次元リストに順次格納する」
というコンセプトのコードを,某 overflow あたりで見た記憶があるのですが,再発掘できなかったので,これも自分への備忘として残しておきます
>>> ls = [[1, 2, 3], [4, 5]]
>>> ls_new = []
>>> for i in ls:
... for x in i:
... ls_new.append(x)
...
>>> print(ls_new)
[1, 2, 3, 4, 5]