覚えておくべき12の便利なPythonワンライナー

Pythonは短くてわかりやすい構文で知られています。Pythonはシンプルなので、しばしば「実行可能疑似コード」と呼ばれます。ワンライナーコードを使用すると、Pythonプログラムをより簡潔にすることができます。これにより、時間を節約し、よりPython的な方法でコードを書くのに役立ちます。

この記事では、熟練したプログラマーのようにコードを書くのに役立つ、重要なPythonワンライナーを紹介します。

この記事で使用されているコードはGitHubリポジトリで公開されており、MITライセンスに基づいて無料で使用できます。

1. 文字列を整数に変換する

組み込みのint()関数を使用して、文字列を整数に変換できます。

str1 = '0'
str2 = '100'
str3 = '587'
print(int(str1))
print(int(str2))
print(int(str3))

出力:

0
100
587

2. リストを逆順にする

さまざまな方法を使用して、Pythonでリストを逆順にすることができます:

スライシングテクニックを使用する

このテクニックを使用すると、元のリストは変更されませんが、リストのコピーが作成されます。

arr = [1, 2, 3, 4, 5, 6]
print(arr)
reversedArr = arr[::-1]
print(reversedArr)

出力:

[1, 2, 3, 4, 5, 6]
[6, 5, 4, 3, 2, 1]

同じスライシングテクニックを使用して、Pythonで文字列を逆順にすることができます。

s = "Welcome"
print(s)
reversedString = s[::-1]
print(reversedString)

出力:

Welcome
emocleW

組み込みのreversed()関数を使用する

reversed()関数は、与えられたリストに逆順でアクセスするイテレータを返します。

arr = [1, 2, 3, 4, 5, 6]
print(arr)
reversedArr = list(reversed(arr))
print(reversedArr)

出力:

[1, 2, 3, 4, 5, 6]
[6, 5, 4, 3, 2, 1]

組み込みのreverse()メソッドを使用する

reverse()メソッドは、元のリストの要素を逆順にします。

arr = [1, 2, 3, 4, 5, 6]
print(arr)
arr.reverse()
print(arr)

出力:

[1, 2, 3, 4, 5, 6]
[6, 5, 4, 3, 2, 1]

3. 2つの変数をスワップする

以下の構文を使用して2つの変数をスワップできます:

variable1, variable2 = variable2, variable1

このメソッドを使用すると、任意のデータ型の変数をスワップできます。

a = 100
b = 12
print("Value of a before swapping:", a)
print("Value of b before swapping:", b)
a, b = b, a
print("Value of a after swapping:", a)
print("Value of b after swapping:", b)

出力:

Value of a before swapping: 100
Value of b before swapping: 12
Value of a after swapping: 12
Value of b after swapping: 100

4. PythonでのFizzBuzzワンライナー

FizzBuzzチャレンジは、コンピュータープログラマーの面接スクリーニングデバイスとして使用される古典的なチャレンジです。たった1行のコードでFizzBuzzチャレンジを解決できます:

for i in range(1, 21): print("Fizz"*(i%3==0)+"Buzz"*(i%5==0) or str(i))

出力:

1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz

5. ランダムなパスワードを生成する

以下のワンライナーコードを使用して、Pythonでランダムなパスワードを生成できます:

import random as r; p = 'abcdefghijklmnopqrstuvwxyz0123456789%^*(-_=+)'; print(''.join(r.choices(p, k=10)))

出力:

v4+zagukpz

このコードは長さ10のパスワードを生成します。パスワードの長さを変更する場合は、choices()メソッドのパラメータを更新します。また、コードを実行するたびに、異なるランダムな出力が得られます。

6. 現在の日時を文字列形式で表示する

datetimeモジュールを使用して、Pythonで現在の日時を表示できます。現在の日時を文字列形式で表示するワンライナーコードを以下に示します:

import datetime; print(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))

出力:

2021-11-22 14:35:41

7. 文字列が回文であるかどうかを確認する

元の文字列とその逆が同じ場合、その文字列は回文であると言われます。以下のコードを使用して、文字列が回文であるかどうかを確認できます:

str1 = "MUO"
str2 = "madam"
str3 = "MAKEUSEOF"
str4 = "mom"
print('Yes') if str1 == str1[::-1] else print('No')
print('Yes') if str2 == str2[::-1] else print('No')
print('Yes') if str3 == str3[::-1] else print('No')
print('Yes') if str4 == str4[::-1] else print('No')

出力:

No
Yes
No
Yes

8. 数字の階乗を求める

非負整数nの階乗は、n以下のすべての正整数の積です。lambda関数を使用して、1行のコードで数字の階乗を求めることができます。Pythonのラムダ関数は、知っておくべき最も重要な機能の1つです。

num1 = 5
num2 = 0
num3 = 10
num4 = 12
factorial = lambda num : 1 if num <= 1 else num*factorial(num-1)
print("Factorial of", num1, ":", factorial(num1))
print("Factorial of", num2, ":", factorial(num2))
print("Factorial of", num3, ":", factorial(num3))
print("Factorial of", num4, ":", factorial(num4))

出力:

Factorial of 5 : 120
Factorial of 0 : 1
Factorial of 10 : 3628800
Factorial of 12 : 479001600

フィボナッチ数列をn項まで表示する

フィボナッチ数列とは、0と1から始まり、各項がその前の2項の和となる数列のことです。Pythonのlambda関数を使用して、n項までのフィボナッチ数列を表示することができます。

from functools import reduce; fibSequence = lambda n: reduce(lambda x, _: x+[x[-1]+x[-2]], range(n-2), [0, 1])
print(fibSequence(10))
print(fibSequence(5))
print(fibSequence(6))

出力:

[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
[0, 1, 1, 2, 3]
[0, 1, 1, 2, 3, 5]

リストの合計を計算する

Pythonのsum()関数を使用して、リストの合計を計算することができます。

list1 = [1, 2, 3, 4, 5, 6, 7]
list2 = [324, 435, 456]
list3 = [0, 43, 35, 12, 45]
print(sum(list1))
print(sum(list2))
print(sum(list3))

出力:

28
1215
135

リストをソートする

sort()メソッドを使用して、リストをソートすることができます。同じコードをワンライナーで記述すると以下のようになります:

list1 = [12, 345, 123, 34, 23, 37]
list2 = ['m', 'a', 'k', 'e', 'u', 's', 'e', 'o', 'f']
list3 = [5, 4, 3, 2, 1]
print("Before Sorting:")
print(list1)
print(list2)
print(list3)
list1.sort()
list2.sort()
list3.sort()
print("After Sorting:")
print(list1)
print(list2)
print(list3)

出力:

Before Sorting:
[12, 345, 123, 34, 23, 37]
['m', 'a', 'k', 'e', 'u', 's', 'e', 'o', 'f']
[5, 4, 3, 2, 1]
After Sorting:
[12, 23, 34, 37, 123, 345]
['a', 'e', 'e', 'f', 'k', 'm', 'o', 's', 'u']
[1, 2, 3, 4, 5]

組み込みのメソッドと関数を使用して、よりPython的なコードを書く

組み込みのメソッドと関数は、コードを短縮し、その効率を高めるのに役立ちます。Pythonには、reduce()、split()、enumerate()、eval()など、多くの組み込みメソッドと関数が用意されています。それらすべてを活用して、よりPython的なコードを書きましょう。