「python」カテゴリーアーカイブ

関数list.copyの使い方の例

関数の機能:リストの浅いコピーを作成する

例1 : 整数が要素のリストのコピー

>>> lst = [1, 2, 3]
>>> lstCpy = lst.copy()
>>> lstCpy
[1, 2, 3]
copy関数によりlstCpyというリストが新たに生成されました。
下記のように、lstCpyの要素を変更してもlstは変化しません。
>>> lstCpy[0] = 15
>>> lstCpy
[15, 2, 3]
>>> lst
[1, 2, 3]

例2 : リストが要素のリストのコピー

>>> lst = [[2,3,4],[7,8,9]]
>>> lstCpy = lst.copy()
>>> lstCpy
[[2, 3, 4], [7, 8, 9]]
コピー対象のリストの要素が、リストのような変更可能(mutable)なオブジェクトの場合、コピー先のリストの要素のリストはコピー元のリストの要素のリストと同一のオブジェクトとなります。
>>> lst[0] is lstCpy[0]
True
なので、リストの要素のリストを変更すると、コピー元とコピー先の要素がどちらも変更されます。
>>> lstCpy[0][0] = 100
>>> lstCpy
[[100, 3, 4], [7, 8, 9]]
>>> lst
[[100, 3, 4], [7, 8, 9]]

for文の例C : 集合や辞書の要素について1つずつ処理

例C1 : 集合の要素を1つずつ表示

nameSet = {'Yuuta', 'Aiko', 'Takeshi'}

for name in nameSet:
    print(name)

実行結果

Aiko
Yuuta
Takeshi

例C2 : 辞書の要素(keyとvalue)を1つずつ表示

dict = {0:'a', 1:'b', 2:'c'}

for k in dict:
    print('key : ', k, '  value : ',dict[k])

実行結果

key :  0   value :  a
key :  1   value :  b
key :  2   value :  c
【リストやタプルを使ったfor文との違い】
集合や辞書は要素の順序が決められていませんので、for文で処理される順序は実行してみなければ分かりません。気まぐれの順序で処理されると考えておきましょう。

for文の例A : range関数を使って数値を順次に変えながら処理

例A1 : 0から3の手前までの整数を順に表示

for i in range(3):
    print(i)

実行結果

0
1
2

例A2 : 3から6の手前までの整数を順に表示

for i in range(3,6):
    print(i)

実行結果

3
4
5

例A3 : 2間隔で10から20の手前までの整数を順に表示

for i in range(10,20,2):
    print(i)

実行結果

10
12
14
16
18

例A4 : 逆順で10から0の手前までの整数を順に表示

for i in range(10,0,-1):
    print(i)

実行結果

10
9
8
7
6
5
4
3
2
1