【Python】仮想環境のライブラリ更新に失敗した時の対応
MAX
MAX999blog
リストはデータ構造として扱う機会が多い。
リストを作成する方法はいくつかあるが、何となくやっていると思わぬところで落とし穴にハマってしまうことがある。
慣れればリスト作成でミスをすることはあまりないが、慣れないうちはリストはイテラブルであることを意識した方がいい。
なお、慣れてきても、ミュータブルであることは常に意識しておいた方がいいと思う。
[]で値を囲むことでリストを作成できる。
複数の値はカンマで区切る。
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# []
値を入力しない場合は空のリストが作成される。
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()関数に渡す場合、文字列はイテラブルであることを意識しておかないと、想定外の結果となってしまうので注意。
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文を含めることも可能。
色々な使い方については以下の記事参照。
基本は[]で囲んで作成する。特にリスト内包表記はよく使う。
タプルや集合、辞書などの型を変えたい場合は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]