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

Pythonでリストに連続した数値が含まれているか確認する方法

データ分析の目的によっては、Pythonのデータコンテナ内に連続した数値が含まれているかどうかを確認する必要がある場合があります。本記事では、リストの要素の中に連続する数値が存在するかどうかを判定する2つの方法を、具体的なサンプルコードとともに解説します。

rangeとsortedを組み合わせる方法

sorted関数は、リストの要素を昇順に並べ替えます。その後、min関数とmax関数を使ってリスト内の最小値と最大値を取得し、range関数に渡して連続した数値列を生成します。並べ替えたリストと生成した数値列を比較し、両者が一致すれば、元のリストには連続した数値が含まれていることになります。

サンプルコード

listA = [23,20,22,21,24]
sorted_list = sorted(listA)
#sorted(l) ==
range_list=list(range(min(listA), max(listA)+1))
if sorted_list == range_list:
   print("listA has consecutive numbers")
else:
   print("listA has no consecutive numbers")

# Checking again
listB = [23,20,13,21,24]
sorted_list = sorted(listB)
#sorted(l) ==
range_list=list(range(min(listB), max(listB)+1))
if sorted_list == range_list:
   print("ListB has consecutive numbers")
else:
   print("ListB has no consecutive numbers")

実行結果

上記のコードを実行すると、以下の出力が得られます。

listA has consecutive numbers
ListB has no consecutive numbers

numpyのdiffとsortedを組み合わせる方法

numpyのdiff関数を使うと、ソート後の隣接する数値同士の差分を一括で計算できます。この差分の合計を求めると、すべての数値が連続している場合、その値は「リストの長さ - 1」と一致します。この性質を利用して、リスト内の数値が連続しているかどうかを効率的に判定できます。

サンプルコード

import numpy as np
listA = [23,20,22,21,24]

sorted_list_diffs = sum(np.diff(sorted(listA)))
if sorted_list_diffs == (len(listA) - 1):
   print("listA has consecutive numbers")
else:
   print("listA has no consecutive numbers")

# Checking again
listB = [23,20,13,21,24]
sorted_list_diffs = sum(np.diff(sorted(listB)))
if sorted_list_diffs == (len(listB) - 1):
   print("ListB has consecutive numbers")
else:
   print("ListB has no consecutive numbers")

実行結果

上記のコードを実行すると、以下の出力が得られます。

listA has consecutive numbers
ListB has no consecutive numbers
  1. Pythonでリスト内の負の数を出力するプログラム

    この記事では、与えられた問題を解決するためのアプローチと具体的な解法について詳しく解説します。問題の概要リスト(イテラブル)が与えられたとき、そのリストに含まれるすべての負の数を出力する必要があります。ここでは、この問題に対する3つの異なるアプローチを順番に見ていきましょう。アプローチ1:拡張forループを使う方法最も基本的な方法は、forループでリストの各要素を順番に取り出し、if文で負の数かどうかを判定して出力するやり方です。初心者にも直感的に理解しやすいコードです。サンプルコードlist1 = [-11,23,-45,23,-64,-22,-11,24] # 反復処理 for num i

  2. Pythonで文字列が数字のみで構成されているかを判定する方法

    Pythonで文字列が数字のみかどうかを確認する方法 Pythonでは、文字列が数字(0〜9)だけで構成されているかどうかを簡単に判定できます。代表的な方法として、組み込みメソッド isdigit() を使う方法と、正規表現を使う方法の2つがあります。 方法1:isdigit() メソッドを使う Pythonには標準で isdigit() という文字列メソッドが用意されています。文字列内のすべての文字が数字(0〜9)であれば True を返し、それ以外の場合は False を返します。 >>> string = 9764135408 >>> string.