Pythonでリスト内の全要素の先頭の桁が同じかどうかを判定する方法
Pythonのリストを扱う際、各要素の先頭の桁(最初の数字)だけに注目したいケースがあります。本記事では、リスト内のすべての要素の先頭の桁が同じであるかどうかを確認する方法を、2つの異なるアプローチで解説します。
setとmapを使う方法
Pythonのset(集合型)は、重複する値を持つことができません。この特性を利用して、各要素の先頭の桁を取り出してsetに格納します。すべての桁が同じであれば、setに重複が存在しないため、その長さは必ず1になります。
サンプルコード
Alist = [63,652,611,60]
# 対象のリスト
print("Given list : ",Alist)
# setとmapを使用
if len(set(x[0] for x in map(str, Alist))) == 1:
print("All elements have same first digit")
else:
print("Not all elements ,have same first digit")実行結果
上記のコードを実行すると、次のような結果が得られます。
Given list : [63, 652, 611, 60] All elements have same first digit
all()関数を使う方法
このアプローチでは、最初の要素の先頭の桁を基準値として設定し、残りのすべての要素の先頭の桁と順番に比較します。すべての要素が一致していれば、全要素の先頭の桁が同じであると判断できます。all()関数は、ジェネレータ式のすべての条件がTrueの場合にTrueを返すため、簡潔に記述できるのが特徴です。
サンプルコード
Alist = [63,652,611,70]
# 対象のリスト
print("Given list : ",Alist)
# all()を使用
if all(str(i)[0] == str(Alist[0])[0] for i in Alist):
print("All elements have same first digit")
else:
print("Not all elements ,have same first digit")実行結果
上記のコードを実行すると、次のような結果が得られます。
Given list : [63, 652, 611, 70] Not all elements, have same first digit
まとめ
どちらの方法でも目的を達成できますが、setとmapを使う方法は一意な値の数を直接確認できるため直感的であり、all()関数を使う方法は基準となる要素との比較が明確で読みやすいというメリットがあります。データの規模や可読性の要件に応じて使い分けるとよいでしょう。
-
Pythonのリストのリストで三角不等式をチェックする方法
三角形において、任意の2辺の長さの和は、必ず残りの1辺よりも大きくなります。これを三角不等式と呼びます。本記事では、Pythonのリストのリスト(ネストされたリスト)の中から、この三角不等式が成立するサブリストを特定する方法を、2つの異なるアプローチで解説します。 方法1:forループと比較演算子を使う まず、すべてのサブリストを昇順にソートします。こうすることで、各サブリストの最後の要素が必ず最大の辺になります。そのうえで、最初の2つの要素(短い2辺)の合計が3番目の要素(最も長い辺)より大きいかどうかを確認すれば、三角不等式が成り立つかどうかを判定できます。 サンプルコード Alist
-
Pythonでリスト内の全要素の先頭の桁が同じかどうかを判定する方法
Pythonのリストを扱う際、各要素の先頭の桁(最初の数字)だけに注目したいケースがあります。本記事では、リスト内のすべての要素の先頭の桁が同じであるかどうかを確認する方法を、2つの異なるアプローチで解説します。setとmapを使う方法Pythonのset(集合型)は、重複する値を持つことができません。この特性を利用して、各要素の先頭の桁を取り出してsetに格納します。すべての桁が同じであれば、setに重複が存在しないため、その長さは必ず1になります。サンプルコードAlist = [63,652,611,60] # 対象のリスト print(Given list : ,Alist) # set