工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> Python

Pythonリスト操作:作成、アクセス、変更、高度なテクニック

Pythonリスト操作

Pythonリストは言語で最も汎用性の高いデータ構造の一つで、値のシーケンスを効率的に格納、整理、操作できます。このガイドでは、リスト要素の作成とアクセスから、スライシング、内包表記、組み込みメソッドといった高度なテクニックまで、知っておくべきすべてをカバーします。

動画:Pythonリストとタプル

Pythonリストを使えば複数のアイテムを同時に扱えます。例:

# プログラミング言語のリスト
['Python', 'C++', 'JavaScript']

Pythonリストの作成

リストは要素をカンマで区切って角括弧[]内に配置することで作成します。リストは任意の数のアイテムを含み、異なるデータ型を混在させられます。

# 整数のリスト
my_list = [1, 2, 3]

例:

# 空のリスト
my_list = []
# 混合データ型
my_list = [1, "Hello", 3.4]

リストは別のリストを含むこともでき、ネスト構造を作れます。

# ネストしたリスト
my_list = ["mouse", [8, 4, 6], ["a"]]

リスト要素へのアクセス

Pythonにはアイテムにアクセスする複数の方法があります。

インデックス

[]演算子を使用します。インデックスは0から始まり、範囲外アクセスはIndexError、非整数インデックスはTypeErrorを発生させます。

my_list = ['p', 'r', 'o', 'b', 'e']
print(my_list[0])  # p
print(my_list[2])  # o
print(my_list[4])  # e
n_list = ["Happy", [2, 0, 1, 5]]
print(n_list[0][1])  # a
print(n_list[1][3])  # 5
print(my_list[4.0])  # TypeError

出力

p o e a 5 Traceback (most recent call last): File "<string>", line 21, in <module> TypeError: list indices must be integers or slices, not float

負のインデックス

負のインデックスはリストの末尾から数えます:-1は最後の要素、-2は最後から2番目、以下同様です。

my_list = ['p','r','o','b','e']
print(my_list[-1])  # e
print(my_list[-5])  # p

出力

e p
Pythonリスト操作:作成、アクセス、変更、高度なテクニック

リストのスライシング

スライシングはコロン演算子:を使ってアイテムの範囲を抽出します。開始インデックスは含まれ、終了インデックスは含まれません。

my_list = ['p','r','o','g','r','a','m','i','z']
print(my_list[2:5])  # ['o', 'g', 'r']
print(my_list[5:])   # ['a', 'm', 'i', 'z']
print(my_list[:])    # 全リスト

出力

['o', 'g', 'r'] ['a', 'm', 'i', 'z'] ['p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z']

注意:スライシングは新しいリストを返し、元のリストは変更されません。

リスト要素の変更

リストはミュータブル(変更可能)です。単一アイテムやスライスを置き換えられます。

odd = [2, 4, 6, 8]
odd[0] = 1
print(odd)
odd[1:4] = [3, 5, 7]
print(odd)

出力

[1, 4, 6, 8] [1, 3, 5, 7]

append()(単一)やextend()(複数)で要素を追加。+で連結、*で繰り返しが可能です。

odd = [1, 3, 5]
odd.append(7)
print(odd)
odd.extend([9, 11, 13])
print(odd)
print(odd + [9, 7, 5])
print(["re"] * 3)

出力

[1, 3, 5, 7] [1, 3, 5, 7, 9, 11, 13] [1, 3, 5, 9, 7, 5] ['re', 're', 're']

insert()で特定インデックスに挿入、または空スライスへの代入でも可能です。

odd = [1, 9]
odd.insert(1, 3)
print(odd)
odd[2:2] = [5, 7]
print(odd)

出力

[1, 3, 9] [1, 3, 5, 7, 9]

リスト要素の削除

delでインデックスやスライス、リスト全体を削除。remove()は最初の一致値を削除、pop()はインデックス指定で要素を削除・返却(省略時は最後)、clear()でリストを空にします。

my_list = ['p', 'r', 'o', 'b', 'l', 'e', 'm']
# 1アイテム削除
del my_list[2]
print(my_list)
# 複数削除
del my_list[1:5]
print(my_list)
# リスト全体削除
del my_list
print(my_list)  # NameError

出力

['p', 'r', 'b', 'l', 'e', 'm'] ['p', 'm'] Traceback (most recent call last): File "<string>", line 18, in <module> NameError: name 'my_list' is not defined

スライス代入による代替削除:

>>> my_list = ['p','r','o','b','l','e','m']
>>> my_list[2:3] = []
>>> my_list
['p', 'r', 'b', 'l', 'e', 'm']
>>> my_list[2:5] = []
>>> my_list
['p', 'r', 'm']

一般的なリストメソッド

メソッド説明
append()末尾に要素を追加
extend()別のイテラブルの全要素を追加
insert()指定インデックスにアイテムを挿入
remove()最初に一致する値を削除
pop()インデックス指定で要素を削除・返却(省略時は最後)
clear()リストを空にする
index()値の最初のインデックスを返す
count()値の出現回数をカウント
sort()昇順でソート
reverse()順序を反転
copy()浅いコピーを返す
my_list = [3, 8, 1, 6, 8, 8, 4]
my_list.append('a')
print(my_list)
print(my_list.index(8))  # 1
print(my_list.count(8))  # 3

リスト内包表記

リスト内包表記はリストを生成する簡潔な方法です。

pow2 = [2 ** x for x in range(10)]
print(pow2)

出力

[1, 2, 4, 8, 16, 32, 64, 128, 256, 512]

これは以下と等価:

pow2 = []
for x in range(10):
    pow2.append(2 ** x)

内包表記には複数のfor節やifフィルタを含められます。

>>> pow2 = [2 ** x for x in range(10) if x > 5]
>>> pow2
[64, 128, 256, 512]
>>> odd = [x for x in range(20) if x % 2 == 1]
>>> odd
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
>>> [x+y for x in ['Python ','C '] for y in ['Language','Programming']]
['Python Language', 'Python Programming', 'C Language', 'C Programming']

詳細は公式Pythonドキュメントを参照。

その他のリスト操作

メンバーシップテスト

inまたはnot inで値の存在を確認。

my_list = ['p', 'r', 'o', 'b', 'l', 'e', 'm']
print('p' in my_list)   # True
print('a' in my_list)   # False
print('c' not in my_list)  # True

出力

True False True

リストのイテレーション

forループで各アイテムを処理。

for fruit in ['apple','banana','mango']:
    print("I like", fruit)

出力

I like apple I like banana I like mango

Python

  1. Python データ型マスター: 実践ガイド
  2. Python 演算子完全マスター: 包括的ガイド
  3. Python pass文完全マスター: 実践ガイド
  4. Python 関数引数完全マスター: 位置引数・キーワード引数・デフォルト引数
  5. Pythonのtime.sleep()をマスター:ベストプラクティス、マルチスレッド、実例
  6. Pythonリスト完全ガイド:追加、ソート、長さ、リスト内包表記(実践編)
  7. Pythonで平均を計算する:実践ガイド
  8. Python list.count() 完全ガイド:実践例付きで徹底解説
  9. Pythonリストから重複要素を削除する方法:順序保持と効率のバランス
  10. Pythonリストから要素を削除する方法:remove()、pop()、clear()、del
  11. Python list.index():要素の位置を検索する実践ガイド