Python

【Python】色々なリストの作成方法

MAX

リストはデータ構造として扱う機会が多い。

リストを作成する方法はいくつかあるが、何となくやっていると思わぬところで落とし穴にハマってしまうことがある。

慣れればリスト作成でミスをすることはあまりないが、慣れないうちはリストはイテラブルであることを意識した方がいい。

なお、慣れてきても、ミュータブルであることは常に意識しておいた方がいいと思う。

スポンサーリンク

[]で囲む

[]で値を囲むことでリストを作成できる。

複数の値はカンマで区切る。

1# []で囲む
2list_a = [1]
3print(list_a)
4# [1]
5list_a = ["abc"]
6print(list_a)
7# ['abc']
8
9# 複数の値はカンマで区切る
10list_a = [1, 2, 3]
11print(list_a)
12# [1, 2, 3]
13list_a = ["abc", "def"]
14print(list_a)
15# ['abc', 'def']
16
17# 値を入力しない場合は空のリストが作成される
18list_empty = []
19print(list_empty)
20# []

値を入力しない場合は空のリストが作成される。

組み込みのlist()関数を使う

Pythonの組み込み関数のlist()を使うことでもリストを作成できる。

list()の引数にはイテラブルな値を渡す必要がある。

タプルや集合、辞書のキーや値などをリストにしたい場合に使う。

1# list(iterable)でリスト作成
2list_b = list([1, 2, 3])
3print(list_b)
4# [1, 2, 3]
5
6# 空のリストを作成
7list_empty = list()
8print(list_empty)
9# []

文字列をlist関数に渡す場合の注意

文字列をlist()関数に渡す場合、文字列はイテラブルであることを意識しておかないと、想定外の結果となってしまうので注意。

1# 文字列はイテラブル(添え字で値を取得できる)
2str_a = "abc"
3str_a[0]
4# 'a'
5
6# 文字列をリストにする
7list_b = list(str_a)
8print(list_b)
9# ['a', 'b', 'c']

イテラブルな値を渡さない場合はエラー

1# イテラブルでない値を渡すとTypeError
2list_b = list(1)
3# TypeError: 'int' object is not iterable
4
5# 2個以上の引数を渡すとTypeError
6list_b = list(1, 2, 3)
7# TypeError: list expected at most 1 argument, got 3

カンマ区切りで値を渡したりはできないため、タプルや辞書をリストにしたい時に使うことが多い。

リスト内包表記を使う

イテラブルな変数にちょっとした処理を加えたい場合、リスト内包表記を使うと見やすくなる。

1# リスト内包表記でリスト作成
2list_a = [1, 2, 3]
3list_h = [a * 2 for a in list_a]
4print(list_h)
5# [2, 4, 6]
6
7# 以下の処理と同じ
8list_h = []
9for a in list_a:
10    list_h.append(a * 2)
11print(list_h)
12# [2, 4, 6]

リスト内包表記を使うことで、3行以上必要なコードを1行で書くことができる。

処理時間もリスト内包表記の方が早いので、使える時は積極的に使うと良い。ループ回数が多くなってくると、差が大きくなる。

for ループのシンタックスシュガーなので、リスト以外にもタプルや辞書などもループさせられる。

また簡単なif文を含めることも可能。

色々な使い方については以下の記事参照。

あわせて読みたい
【Python】if文とfor文を1行で書く【リスト内包表記・3項演算子】
【Python】if文とfor文を1行で書く【リスト内包表記・3項演算子】

まとめ

基本は[]で囲んで作成する。特にリスト内包表記はよく使う。

タプルや集合、辞書などの型を変えたい場合はlist()を使う。

1# []で囲む
2list_a = [1, 2, 3]
3print(list_a)
4# [1, 2, 3]
5
6# 組み込みlist()関数
7list_b = list([1, 2, 3])
8print(list_b)
9# [1, 2, 3]
10
11# リスト内包表記
12list_a = [1, 2, 3]
13list_h = [a * 2 for a in list_a]
14print(list_h)
15# [2, 4, 6]

スポンサーリンク
ABOUT ME
MAX
MAX
ITエンジニア、データサイエンティスト
新卒でSIerに入社し、フリーランスになってWEB系へ転向。
その後AIの世界へ足を踏み入れ、正社員に戻る。 テーブルデータの分析がメイン。
スポンサーリンク
記事URLをコピーしました