PR

【Python】効率的なリスト操作、配列処理の Tips を紹介

eyecatch-python Python
この記事は約7分で読めます。
記事内に広告が含まれています。

本記事では、 Python のリスト操作に関する便利な Tips をいくつか紹介します。

これらのテクニックを使いこなすことで、より効率的で読みやすいコードを書くことができるでしょう。

1. リスト内包表記の活用

リスト内包表記は、既存のリストから新しいリストを作成する際に非常に便利です。

従来のfor文よりも簡潔で読みやすいコードを書くことができます。

# 従来のfor文
squares = []
for i in range(10):
    squares.append(i**2)

# リスト内包表記
squares = [i**2 for i in range(10)]
print(squares)  # 出力: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

# 条件付きリスト内包表記
even_squares = [i**2 for i in range(10) if i % 2 == 0]
print(even_squares)  # 出力: [0, 4, 16, 36, 64]
スポンサーリンク

2. スライシングの活用

Python のスライシング機能を使うと、リストの一部を簡単に取得したり、変更したりすることができます。

numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# 基本的なスライシング
print(numbers[2:7])  # 出力: [2, 3, 4, 5, 6]

# ステップを指定したスライシング
print(numbers[::2])  # 出力: [0, 2, 4, 6, 8]

# リストの反転
print(numbers[::-1])  # 出力: [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

# スライシングを使った置換
numbers[3:6] = [30, 40, 50]
print(numbers)  # 出力: [0, 1, 2, 30, 40, 50, 6, 7, 8, 9]

3. zip() 関数を使った複数リストの同時処理

zip() 関数を使うと、複数のリストを同時に処理することができます。

names = ['Taro', 'Jiro', 'Saburo']
ages = [25, 30, 35]
cities = ['Tokyo', 'Osaka', 'Fukuoka']

for name, age, city in zip(names, ages, cities):
    print(f"{name} is {age} years old and lives in {city}.")

# 出力:
# Taro is 25 years old and lives in Tokyo.
# Jiro is 30 years old and lives in Osaka.
# Saburo is 35 years old and lives in Fukuoka.

# zip() の結果をリストに変換
zipped = list(zip(names, ages, cities))
print(zipped)
# 出力: [('Taro', 25, 'Tokyo'), ('Jiro', 30, 'Osaka'), ('Saburo', 35, 'Fukuoka')]

4. enumerate()でインデックスと要素を同時に取得

enumerate() 関数を使うと、リストの要素とそのインデックスを同時に取得できます。

fruits = ['apple', 'banana', 'cherry']

for index, fruit in enumerate(fruits):
    print(f"Index {index}: {fruit}")

# 出力:
# Index 0: apple
# Index 1: banana
# Index 2: cherry

# 開始インデックスを指定
for index, fruit in enumerate(fruits, start=1):
    print(f"Fruit #{index}: {fruit}")

# 出力:
# Fruit #1: apple
# Fruit #2: banana
# Fruit #3: cherry

リストの外で変数を定義してカウントアップするより、とてもスマートに書けますね。

5. リストのソートとカスタムソート

Pythonのsort()メソッドやsorted()関数を使うと、リストを簡単にソートできます。

また、カスタム関数を使って、独自の基準でソートすることも可能です。

# 基本的なソート
numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3]
numbers.sort()
print(numbers)  # 出力: [1, 1, 2, 3, 3, 4, 5, 5, 6, 9]

# reverse=Trueで逆順ソート
numbers.sort(reverse=True)
print(numbers)  # 出力: [9, 6, 5, 5, 4, 3, 3, 2, 1, 1]

# 文字列の長さでソート
words = ['python', 'is', 'awesome', 'and', 'powerful']
sorted_words = sorted(words, key=len)
print(sorted_words)  # 出力: ['is', 'and', 'python', 'awesome', 'powerful']

# カスタム関数を使ったソート
def sort_by_last_letter(word):
    return word[-1]

sorted_words = sorted(words, key=sort_by_last_letter)
print(sorted_words)  # 出力: ['awesome', 'and', 'is', 'python', 'powerful']
スポンサーリンク

6. collectionsモジュールの活用

Pythonのcollectionsモジュールには、リスト操作に便利なデータ構造が多数用意されています。

ここではCounterクラスの使用例を紹介します。

from collections import Counter

# リスト内の要素の出現回数をカウント
fruits = ['apple', 'banana', 'apple', 'cherry', 'banana', 'apple']
fruit_counts = Counter(fruits)

print(fruit_counts)  
# 出力: Counter({'apple': 3, 'banana': 2, 'cherry': 1})

# 最も多い要素を取得
most_common = fruit_counts.most_common(2)
print(most_common)  # 出力: [('apple', 3), ('banana', 2)]

# 要素の追加と削除
fruit_counts['orange'] = 1
del fruit_counts['cherry']

print(fruit_counts)
# 出力: Counter({'apple': 3, 'banana': 2, 'orange': 1})
スポンサーリンク

おわりに

Python のリスト操作に関する主要な Tips をいくつか紹介しました。

これらのテクニックを使いこなすことで、より効率的で読みやすい Python コードを書くことができると思います。

コメント

タイトルとURLをコピーしました