0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Pythonによる多次元リストを一次元に平坦化

Posted at

Pythonによる多次元リストを一次元に平坦化

前置き

@ahpjop 様の「自作Python100本ノック」を解いていて、Q14が勉強になったので記事にまとめました。

コード

flat.py
def flat(l):
    res = []
    for i in l:
        if type(i) is list:
            res.extend(flat(i))
        else:
            res.append(i)
    return res

a = [1,2,[3,4],5,[6,[7,[[8,9]]]]]
print(flat(a))

# 実行結果
[1, 2, 3, 4, 5, 6, 7, 8, 9]

説明

ここでは、appendメソッドとextendメソッドが重要になります。

公式ドキュメントより

  • appendメソッド
    list.append(x)
    リストの末尾に要素を一つ追加します。a[len(a):] = [x] と等価です。

  • extendメソッド
    list.extend(iterable)
    イテラブルのすべての要素を対象のリストに追加し、リストを拡張します。a[len(a):] = iterable と等価です。

sample.py
a=[]

a.append(1)
#[1]
a.append([2])
#[1,2]
a.append('ai')
#[1,2,'a','i']

今回の場合、リストの要素が数字ならそのままresに追加し、リストならresを拡張しているわけです。これにより、多次元リストを一次元に平坦化しています。

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?