Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonの便利なトリック10選!コードを短くきれいに書くテクニック

Pythonの人気が高まるにつれ、開発で利用できる機能も年々充実しています。こうした機能を活用すれば、少ない行数でより読みやすく美しいコードを書けるようになります。本記事では、実際の開発で頻繁に使われる実用的なPythonのトリックを10個、サンプルコードと実行結果つきで紹介します。

1. リストを反転する

reverse()メソッドを使えば、リストの要素を簡単に反転できます。数値でも文字列でも、リストに含まれるデータ型を問わず動作します。

サンプルコード

List = ["Shriya", "Lavina", "Sampreeti"]
List.reverse()
print(List)

実行結果

['Sampreeti', 'Lavina', 'Shriya']

2. リストの要素を任意の順序で出力する

リストの値をいろいろな順序で表示したい場合は、リストを複数の変数にアンパックして代入し、出力する順番を自由に制御できます。

サンプルコード

List = [1, 2, 3]
w, v, t = List
print(v, w, t)
print(t, v, w)

実行結果

2 1 3
3 2 1

3. 関数内でジェネレータを使う

ジェネレータ式は関数の引数として直接渡せるため、より短くクリーンなコードを書けます。次の例では、sum()関数の引数にジェネレータ式をそのまま指定して0〜9の合計を求めています。

サンプルコード

sum(i for i in range(10))

実行結果

45

4. zip()関数で複数のリストをまとめる

複数のイテラブル(リストやタプルなど)を対応する要素ごとに結合したいときは、zip()関数が便利です。それぞれのリストから取り出した要素がペア(タプル)としてグループ化されます。

サンプルコード

Year = (1999, 2003, 2011, 2017)
Month = ("Mar", "Jun", "Jan", "Dec")
Day = (11, 21, 13, 5)
print(list(zip(Year, Month, Day)))

実行結果

[(1999, 'Mar', 11), (2003, 'Jun', 21), (2011, 'Jan', 13), (2017, 'Dec', 5)]

5. 1行のコードで2つの変数を入れ替える

一般的な言語では変数の値を交換する際に一時変数が必要ですが、Pythonではタプルのアンパックを利用して、たった1行でスワップを実現できます。

サンプルコード

x, y = 11, 34
print(x)
print(y)
x, y = y, x
print(x)
print(y)

実行結果

11
34
34
11

6. 行列を転置する

行列の転置とは、列と行を入れ替える操作のことです。ループで要素を一つずつ移動させる方法もありますが、zip()関数と*演算子(アンパック)を組み合わせれば、わずか1行で転置行列を作成できます。

サンプルコード

x = [[31, 17],
[40, 51],
[13, 12]]
print(list(zip(*x)))

実行結果

[(31, 40, 13), (17, 51, 12)]

7. 文字列をN回出力する

他のプログラミング言語では、文字列を繰り返し表示するためにループ処理を書く必要があります。しかしPythonでは、文字列に数値を掛けるだけで同じ文字列を繰り返せます。

サンプルコード

text = "Point"
print(text * 3)

実行結果

PointPointPoint

※なお、組み込み型のstrと名前が重複するため、変数名に「str」を使うのは避けたほうが安全です。

8. スライス記法でリストを反転する

スライスはPythonの非常に強力な機能の一つです。[::−1]という記法を使えば、reverse()メソッドを使わなくてもリストの並び順を逆にできます。

サンプルコード

# 文字列のリストを反転
list1 = ["a", "b", "c", "d"]
print(list1[::-1])

# 数値のリストを反転
list2 = [1, 3, 6, 4, 2]
print(list2[::-1])

実行結果

['d', 'c', 'b', 'a']
[2, 4, 6, 3, 1]

9. 数の約数を求める

計算や分析のためにある整数の約数が必要になったときは、1からその数まで順番に割り切れるかを確認するシンプルなループで求められます。

サンプルコード

f = 32
print("The factors of", f, "are:")
for i in range(1, f + 1):
    if f % i == 0:
        print(i)

実行結果

The factors of 32 are:
1
2
4
8
16
32

10. 変数のメモリ使用量を確認する

sysモジュールのgetsizeof()関数を使えば、宣言した変数がどれだけのメモリを消費しているかを調べられます。下の例のように、文字列は長さによって消費メモリ量が変わることがわかります。

サンプルコード

import sys
a, b, c, d = "abcde", "xy", 2, 15.06
print(sys.getsizeof(a))
print(sys.getsizeof(b))
print(sys.getsizeof(c))
print(sys.getsizeof(d))

実行結果

38
35
24
24

※返されるバイト数はPythonのバージョンや実行環境によって異なる場合があります。

まとめ

今回紹介したトリックは、どれも数行のコードで実現できるシンプルながら強力なテクニックです。日常的なコーディングに取り入れることで、コードの可読性と生産性を大きく向上させられるでしょう。まずは自分のプロジェクトでぜひ試してみてください。

  1. Pythonでリストのすべてのサブリストを生成して出力する方法

    リストが与えられたとき、そのリストに含まれるすべてのサブリスト(部分リスト)を生成して出力するプログラムを紹介します。要素数 n のリストの場合、空のリストを含めるとサブリストの総数は n×(n+1)/2+1 個になります。 実行例 入力 : list = [1, 2, 3] 出力 : [], [1], [1, 2], [1, 2, 3], [2], [2, 3], [3] アルゴリズム 考え方はシンプルです。開始位置 i と終了位置 j の組み合わせをすべて試し、スライスで部分リストを取り出します。 ステップ1 : 対象となるリストを用意します。 ステップ2 : 結果を格納するため、最

  2. Pythonでリストを出力する方法|インデックスの基本から実践的な出力テクニックまで

    Pythonのリストとは? Pythonのリスト(list)は、複数の要素をひとつにまとめて管理できるデータ型です。リスト内の各要素は順序を持って格納されており、それぞれの位置(インデックス)を指定することで、任意の要素にアクセスできます。 インデックスは0から始まる リストのインデックスは0から始まる点に注意が必要です。つまり、最初の要素が list[0]、2番目の要素が list[1]、3番目の要素が list[2] に対応します。 例えば、以下のようなリストを考えてみましょう。 numbers = [10, 20, 50, 40] print(numbers[2]) # 出力結果:5