【Python】【Flask】pyinstallerでexeファイルを作成する
MAX
MAX999blog
リスト同士の結合にはいくつか方法があり、新たなリストを返す方法や自信を更新する方法もある。
また、破壊的な方法はリスト同士だけでなく、リストとイテラブルであれば結合できる。
直感的に分かりやすい方法。リスト同士なら+で結合可能。
1list_a = [1, 2, 3]
2list_b = [10, 20, 30]
3# list同士は+で結合可能
4list_c = list_a + list_b
5print(list_c)
6# [1, 2, 3, 10, 20, 30]
+演算子ではリスト同士以外は結合できない。
1# リスト同士でないと+演算子での結合はできない
2a = 10
3list_a + a
4# TypeError: can only concatenate list (not "int") to list
5
6tuple_a = (10, 20, 30)
7list_a + tuple_a
8# TypeError: can only concatenate list (not "tuple") to list
9
10set_a = set([10, 20, 30])
11list_a + set_a
12# TypeError: can only concatenate list (not "set") to list
リストじゃないと結合できないとのエラーが出力される。
なお、後述する自身を更新するタイプの結合の場合、タプルや集合なども結合可能となっている。
この処理は+演算子の処理なので、同じ型同士でないと計算できないのかもしれない。
「*」演算子でリストを複数回繰り返すことができる。
1list_a = [1, 2, 3]
2# list * nでlistをn回繰り返すことが可能
3list_b = list_a * 3
4print(list_b)
5list_c = 3 * list_a
6print(list_c)
7# [1, 2, 3, 1, 2, 3, 1, 2, 3]
8# [1, 2, 3, 1, 2, 3, 1, 2, 3]
自身を更新するので、結合というよりは、拡張の方が合っている。extendを使うし。
1# +=で自身を更新して結合
2list_a = [1, 2, 3]
3list_b = [4, 5, 6]
4list_a += list_b
5print(list_a)
6# [1, 2, 3, 4, 5, 6]
1# extendでリストを拡張
2list_a = [1, 2, 3]
3list_b = [4, 5, 6]
4list_a.extend(list_b)
5print(list_a)
タプルや集合も結合して拡張可能。
1# list同士以外も結合可能
2# タプルを結合して拡張
3list_a = [1, 2, 3]
4tuple_a = (4, 5, 6)
5list_a += tuple_a
6print(list_a)
7# [1, 2, 3, 4, 5, 6]
8
9# 集合を結合して拡張
10list_a = [1, 2, 3]
11set_a = set([10, 20, 30])
12list_a.extend(set_a)
13print(list_a)
14# [1, 2, 3, 10, 20, 30]
appendとextendはどちらも自身を更新する処理だが、extendはイテラブルを展開するのに対し、appendは引数の値を1個の要素として扱う。
1# 参考appendの動作
2list_a = [1, 2, 3]
3list_b = [4, 5, 6]
4list_a.append(list_b)
5print(list_a)
6# [1, 2, 3, [4, 5, 6]]
リストにリストをappendすると入れ子になったリストが出来上がる。
1list_a = [1, 2, 3]
2list_a *= 3
3print(list_a)
4# [1, 2, 3, 1, 2, 3, 1, 2, 3]
テストデータで同じ内容を何回も繰り返したい時に使ったり。
1# リストの結合
2list_a = [1, 2, 3]
3list_b = [10, 20, 30]
4list_c = list_a + list_b
5print(list_c)
6# [1, 2, 3, 10, 20, 30]
7
8# listの複数回繰り返し
9list_a = [1, 2, 3]
10list_b = list_a * 3
11print(list_b)
12# [1, 2, 3, 1, 2, 3, 1, 2, 3]
13
14# リストの拡張
15# +=で自身を更新して結合
16list_a = [1, 2, 3]
17list_b = [4, 5, 6]
18list_a += list_b
19# または
20list_a.extend(list_b)
21print(list_a)
22# [1, 2, 3, 4, 5, 6]
23
24# 複数回繰り返して拡張
25list_a *= 3
26print(list_a)
27# [1, 2, 3, 1, 2, 3, 1, 2, 3]
リストの結合や拡張は、その操作が破壊的かどうかがパッと見で分かるため、注意しやすいのがいい。