はじめに
現在、コーディング力を向上させるためにpaizaのスキルチェック問題に取り組んでいます。その中でよく使うリスト型について基本を理解しておきたいと思います。
公式ドキュメントに書かれた定義を理解してコーディングをできるようになることが目標です。自分なりに公式ドキュメントから読み取った内容を整理してみたいと思います。
python公式ドキュメントのチュートリアルを参照しました。
list型の特徴
シーケンス型(要素に順序を持つデータ型)の一つ。
複数の値をまとめるために最も多く使われます。基本的には同じ型の要素を持たせます。
1. 基本の入出力
mylist = [1, 2, 3, 4, 5]
print(mylist)
# [1, 2, 3, 4, 5]
2. インデックスの指定
print(mylist[0])
# 1
print(mylist[-2])
# 4
print(mylist[2:])
# [3, 4, 5]
3. listの連結
mylist = [1, 2, 3, 4, 5]
print(mylist + [10, 20, 30, 40, 50])
# [1, 2, 3, 4, 5, 10, 20, 30, 40, 50]
4. listの要素を入れ替える(listはミュータブル)
mylist = [1, 2, 3, 4, 5]
mylist[2] = 30
print(mylist)
# [1, 2, 30, 4, 5]
5. listの末尾に要素を追加
mylist = [1, 2, 3, 4, 5]
mylist.append(60)
print(mylist)
# [1, 2, 3, 4, 5, 60]
6. listの参照
mylist = [1, 2, 3, 4, 5]
mylist2 = mylist
id(mylist) == id(mylist2)
# True
※id(mylist) == id(mylist2)がTrueの場合、この二つの変数は同じリストを内包している。コピーしているわけではない。
mylist.append(60)
print(mylist2)
# [1, 2, 3, 4, 5, 60]
※mylistに要素を追加。printでmylist2を指定しているのに、mylistの要素が出力されている。同じリストを参照していることになる。
7. listのコピー
mylist = [1, 2, 3, 4, 5]
mylist2 = mylist[:] # [:]でコピーできる
mylist.append(60)
print('mylist:',mylist)
print('mylist2:', mylist2)
# mylist: [1, 2, 3, 4, 5, 60]
# mylist2: [1, 2, 3, 4, 5]
※コピー方法の別例
mylist = [1, 2, 3, 4, 5]
mylist2 = mylist.copy() # コピー方法の別例
print(mylist2)
# [1, 2, 3, 4, 5]
8. スライスを使ったlistの操作
mylist = [1, 2, 3, 4, 5]
print(mylist)
# [1, 2, 3, 4, 5]
mylist[2:4] = [30, 40] # 要素の一部を置き換える。今回の場合は要素数は変わらない
print(mylist)
# [1, 2, 30, 40, 5]
mylist[2:4] = [] # 要素の一部を削除する
print(mylist)
# [1, 2, 5]
mylist[:] = [] # 要素を空にして初期化
print(mylist)
# []
9. listの要素数を求める
mylist = [1, 2, 3, 4, 5]
print(len(mylist))
# 5
10. listのネスト構造
mylist = [1, 2, 3, 4, 5]
mylist2 = ['a', 'b', 'c', 'd', 'e']
mylist3 = [mylist, mylist2]
print(mylist3)
# [[1, 2, 3, 4, 5], ['a', 'b', 'c', 'd', 'e']]
print(mylist3[1])
# ['a', 'b', 'c', 'd', 'e']
print(mylist3[1][3])
# d
※mylist3の中にリストが二つ入る二重リストの構造。mylist3の要素にアクセスする場合はインデックスを二重に使う必要がある。
まとめ
リストの基本的な使い方を学習しました。公式ドキュメントの中でも、まずはチュートリアルを確認すると理解しやすいのかもしれないと思いました。次、標準ライブラリを読み込んでみたいと思います。