Python

 Computer >> コンピューター >  >> プログラミング >> Python
  1. Pythonでリスト内のすべての部分リストに一意な要素が含まれているかをチェックするプログラム

    要素を格納したリスト nums が与えられ、そのすべての部分リスト(サブリスト)について「その部分リスト内でちょうど1回だけ出現する要素が少なくとも1つ存在するか」を判定する問題を考えます。この問題は線形時間で解くことが求められます。 たとえば、入力が nums = [5, 10, 20, 10, 0] の場合、出力は True になります。これは、[[5], [10], [20], [10], [0], [5,10], [10,20], [20,10], [10,0], [5,10,20], [10,20,10], [20,10,0], [5,10,20,10], [10,20,10,0],

  2. Python Pandas入門:DateTimeIndexの特定の時刻における値のインデックス位置を取得する方法

    PandasのDateTimeIndexにおいて、特定の時刻に該当する値のインデックス位置(整数位置)を取得したい場合は、indexer_at_time()メソッドを使用します。このメソッドは、指定した時刻と一致する要素の位置を配列として返してくれるため、時系列データの中から特定の時間帯のデータを抽出する際に非常に便利です。必要なライブラリのインポートまず、Pandasをインポートします。import pandas as pdDatetimeIndexの作成次に、開始日時「2021-10-30 02:30:50」から、期間5・頻度20分(freq=20T)、タイムゾーンはオーストラリア/アデレ

  3. Python Pandas:DateTimeIndexのindexer_between_time()で特定時刻間の値のインデックス位置を取得する方法

    DateTimeIndex内で、1日のうち特定の時刻の間に含まれる値のインデックス位置を取得するには、DateTimeIndex.indexer_between_time()メソッドを使用します。このメソッドは、開始時刻(start_time)と終了時刻(end_time)で指定した範囲に該当する要素の位置を配列として返します。 必要なライブラリのインポート まず、pandasをインポートします。 import pandas as pd DatetimeIndexの作成 期間(periods)を5、頻度(freq)を「20T」=20分間隔としてDatetimeIndexを作成します。タイムゾー

  4. 【Python】リスト内のすべての部分リストの最小値の合計を効率的に求める方法

    問題概要 数値のリスト nums が与えられたとします。このとき、nums から作れるすべての連続する部分リスト(サブリスト)x について最小値を求め、それらの合計を計算します。答えが非常に大きくなる可能性があるため、最終的な結果は 109 + 7 で割った余りを返します。 具体例 たとえば、入力が nums = [5, 10, 20, 10, 0] の場合、出力は 90 になります。これは、考えられる部分リストが次の15通りあり、 [[5], [10], [20], [10], [0], [5,10], [10,20], [20,10], [10,0], [5,10,20], [10,20

  5. Python Pandas入門:DateTimeIndexで開始時刻を含む特定の時刻範囲の値のインデックス位置を取得する方法

    DateTimeIndexの中から、特定の時刻の範囲(time of day)に該当する値のインデックス位置を取得するには、indexer_between_time()メソッドを使用します。開始時刻そのものを検索結果に含めたい場合は、include_startパラメータをTrueに設定します。 必要なライブラリのインポート まずは、必要なライブラリをインポートします。 import pandas as pd DatetimeIndexの作成 次に、期間7・頻度20分(freq=20T)・タイムゾーン「Australia/Adelaide」を指定してDatetimeIndexを作成します。

  6. Python Pandas – DateTimeIndexの時刻を深夜(00:00:00)に変換するnormalize()メソッドの使い方

    PandasでDateTimeIndexの時刻を深夜(00:00:00)に変換したい場合は、DateTimeIndex.normalize()メソッドを使用します。このメソッドは、日付の時刻部分を切り捨てて真夜中に正規化し、タイムゾーン情報はそのまま保持します。 必要なライブラリのインポート まず、必要なライブラリをインポートします。 import pandas as pd DatetimeIndexの作成 次に、開始時刻を「2021-10-30 02:30:50」、期間を7、頻度を10時間(10H)、タイムゾーンを「Australia/Adelaide」としてDatetimeIndexを

  7. Python Pandas入門:DateTimeIndex.strftime()で日付書式を指定した整形済み文字列のインデックスを取得する方法

    日付書式(date format)を指定して整形済み文字列のインデックスを返すには、PandasのDateTimeIndex.strftime()メソッドを使用します。このメソッドを使うことで、「2021年10月30日は土曜日でした」のような、人間が読みやすい形式の日付文字列を簡単に生成できます。必要なライブラリのインポートまず、必要なライブラリをインポートします。import pandas as pdDatetimeIndexの作成次に、期間7・頻度「2D」(2日ごと)・タイムゾーン「Australia/Adelaide」を指定したDatetimeIndexを作成します。datetimein

  8. Pythonでリスト内のピーク(ローカルピーク)のインデックスをすべて見つける方法

    問題の概要 数値のリスト nums が与えられたとき、すべての「ピーク(山)」要素のインデックスを昇順で求めることを考えます。あるインデックス i の要素がピークであるためには、次の3つの条件がすべて満たされている必要があります。 右側にある nums[i] と異なる値のうち最も近い数が存在しない、またはその値が nums[i] より小さい 左側にある nums[i] と異なる値のうち最も近い数が存在しない、またはその値が nums[i] より小さい 左側または右側のいずれかに、nums[i] と異なる値が少なくとも1つ存在する 例えば、入力が nums = [5, 8, 8, 8, 6,

  9. Pythonで先手必勝を判定!目標スコア到達ゲームの勝敗チェックプログラム

    問題の概要 2つの整数 k と target が与えられ、Amal(アマル)と Bimal(ビマル)の2人が交互にゲームを行う状況を考えます。各ラウンドでプレイヤーは 1 から k までの数字を1つ選び、0から始まる合計スコアに加算していきます。合計が target に到達させたプレイヤーの勝ちです。Amalが常に先手であり、両者が最適な戦略を取る場合、Amalが強制的に勝利できるかどうかを判定します。 例えば、k = 5、target = 10 の場合、出力は True になります。Amalが最初に4を選ぶと、Bimalが1〜5のどれを選んでも、次にAmalが5を選べば必ず10に到達できるた

  10. 【Python】2つの異なる都市へ同じ人数を送るときの最小コストを求めるプログラム

    リスト costs があるとします。costs[i] は [c1, c2] という形式で表され、人 i が都市0へ移動するのに c1 のコストがかかり、都市1へ移動するのに c2 のコストがかかることを意味します。ここで、都市0と都市1へ同じ人数ずつ送りたい場合に必要な最小コストを求めるのがこの問題です。たとえば、入力が costs = [[2, 6], [10, 3], [4, 9], [5, 8]] のとき、出力は 17 になります。これは、人0と人2を都市0へ、人1と人3を都市1へ割り当てると、都市0側のコストが 2 + 4 = 6、都市1側のコストが 3 + 8 = 11 となり、合計

  11. Python Pandas入門:DateTimeIndex.snap()でタイムスタンプを最も近い頻度にスナップする方法

    DateTimeIndex.snap()メソッドとは PandasのDateTimeIndex.snap()メソッドを使うと、DateTimeIndex内の各タイムスタンプを、指定した頻度の中で最も近い日時へスナップ(丸め)できます。スナップ先の頻度は、freqパラメータで指定します。 まず、必要なライブラリをインポートしましょう。 import pandas as pd 次に、期間6・頻度「D」(日単位)・タイムゾーン「Australia/Adelaide」を指定してDatetimeIndexを作成します。 datetimeindex = pd.date_range(2021-10-20

  12. Pythonで果物かごを満たすための最小コストを効率的に求めるプログラム

    問題の概要 fruitsというリストと、2つの値k・capが与えられているとします。リストの各要素fruits[i]は3つの値[c, s, t]からなり、それぞれ「果物iの1個あたりのコストc」「果物1個のサイズs」「果物iの在庫数t」を意味します。また、kは容量capの果物かごの本数を表します。 このとき、以下の制約をこの順序で守りながら、かごに果物を詰めていきます。 各かごに入れられるのは同じ種類の果物のみ 各かごはできる限り満杯に近づける 各かごのコストはできる限り安く抑える これらの条件のもとで、できるだけ多くのかごを満たすために必要な最小コストを求めるのが目的です。 入力例と出

  13. PandasでDateTimeIndexを1時間ごとの頻度で丸める方法|round()の使い方を解説

    PandasでDateTimeIndexを1時間ごとの頻度に丸めるには、DateTimeIndex.round()メソッドを使用します。1時間ごとの頻度を指定する場合は、freqパラメータに「H」を設定します。 実装の手順 まず、必要なライブラリをインポートします。 import pandas as pd 続いて、期間5つ・頻度「T」(分単位)でDatetimeIndexを作成します。タイムゾーンはオーストラリア/アデレード(Australia/Adelaide)を指定しています。 datetimeindex = pd.date_range(2021-09-29 07:00, per

  14. Python Pandas入門:DateTimeIndexを分単位の頻度で丸める方法

    pandasでDateTimeIndex(日時インデックス)を分単位の頻度で丸めるには、DateTimeIndex.round()メソッドを使用します。分単位の頻度を指定したい場合は、freq引数にTを設定します。なお、Tは「min(minutes)」のエイリアスであり、どちらを指定しても同じ結果が得られます。手順1:ライブラリのインポートまず、必要なライブラリをインポートします。import pandas as pd手順2:DateTimeIndexの作成次に、期間5・頻度45秒(45s)のDatetimeIndexを作成します。タイムゾーンにはオーストラリアのアデレード(Australia

  15. Pythonで文字列を半単調にするために必要な最小の文字更新回数を求める方法

    問題概要小文字の英字のみで構成された、長さが偶数の文字列 s が与えられます。すべてのインデックス i(0 ≤ i < n/2)および j(n/2 ≤ j < n)の組み合わせに対して、次の3つの条件のいずれかひとつが一貫して成り立つようにするには、最低でも何文字を書き換える必要があるかを求めます。s[i] > s[j]s[i] < s[j]s[i] == s[j]たとえば、入力が s = pppxxp の場合、答えは 1 になります。末尾の p を x に1文字だけ変更すれば、すべてのペアで条件 s[i] < s[j] が満たされるためです。解法のアプローチこの

  16. Pythonでソート済みリストに要素を挿入すべきインデックスを二分探索で見つける方法

    昇順にソートされた数値のリスト nums と、別の数値 target が与えられたとします。このとき、nums のソート状態を保ったまま target を挿入できるインデックスを求めます。もし target がすでにリスト内に存在する場合は、挿入可能な最大のインデックスを返します。さらに、ライブラリ関数を使用せず、O(log n) の計算量で解くことが条件です。たとえば、入力が nums = [1,5,6,6,8,9]、target = 6 の場合、出力は 4 になります。これは、6 がすでにリスト内に存在するため、挿入できる最大のインデックスが 4 であり、挿入後の配列は [1,5,6,6,

  17. Pythonで整数をローマ数字に変換する方法をわかりやすく解説

    整数 num が与えられたとき、それを対応するローマ数字へ変換することを考えてみましょう。ローマ数字では、以下のような記号と値が使われます。 「I」= 1 「V」= 5 「X」= 10 「L」= 50 「C」= 100 「D」= 500 「M」= 1000 通常、これらの記号は値が大きい順に左から右へ並べられ、すべての記号の値を合計することで数値を表します。しかし、小さい値の記号が大きい値の記号の左側に置かれる特別なケースも存在します。この場合、小さい方の値は大きい方の値から差し引かれます。 そのような減算ルールが適用されるケースの例は以下の通りです。 「I」が「V」の前にある場合 →

  18. Pythonで2つのマップに重複して存在する島の数をカウントする方法

    2つのバイナリ行列 mat1 と mat2 が与えられたとします。ここで、1は陸地を、0は水を表します。水に囲まれた1(陸地)の集まりは「島」と呼ばれます。この問題では、mat1とmat2の両方において、まったく同じ座標に存在する島の数を求める必要があります。問題の例たとえば、入力が次のような場合を考えてみましょう。mat1:101100100mat2:101100101この場合の出力は 2 になります。重複している島は以下のようにハイライトされた部分です。101100101つまり、両方のマップで同じ座標に存在する島は2つあるということになります。解決のためのアルゴリズムこの問題は、次の手順で

  19. Pythonで歩行によりk回以上カバーされるブロックの数を数えるプログラム

    2つのリストwalksとtargetが与えられているとします。初期状態では、1次元の数直線上の位置0に立っています。|walks[i]| は歩いたステップ数を表し、walks[i] が正の値なら右方向へ、負の値なら左方向へ移動したことを意味します。歩行中は常に1ブロック(隣接する整数位置)ずつ移動します。ここで求めたいのは、target回以上踏まれたブロック(区間)の総数です。たとえば、入力が walks = [3, -7, 2]、target = 2 の場合、出力は 5 になります。下図のように、[0, 1]、[1, 2]、[2, 3]、[-4, -3]、[-3, -2] の5つの区間がちょ

  20. Python Pandasのoverlaps()メソッドでIntervalがIntervalArrayの値と重複しているか要素ごとに確認する方法

    Pandasのoverlaps()メソッドを使うと、あるInterval(区間)がIntervalArray内の各値と重複しているかどうかを、要素ごとに効率よく確認できます。 ライブラリのインポート まず、必要なライブラリをインポートします。 import pandas as pd 区間の重複のルール 2つの区間は、閉じた端点を含めて共通の点を1つでも持つ場合に「重複している」とみなされます。一方、開いた端点のみが一致している場合は、重複とは判断されません。 IntervalArrayの作成 pd.arrays.IntervalArray.from_tuples()を使って、タプルのリストから

Total 8994 -コンピューター  FirstPage PreviousPage NextPage LastPage CurrentPage:393/450  20-コンピューター/Page Goto:1 387 388 389 390 391 392 393 394 395 396 397 398 399