Python

 Computer >> コンピューター >  >> プログラミング >> Python
  1. Pythonのリストからインデックスを指定して要素だけを抽出するプログラム

    問題の概要 nums という要素のリストが与えられたとします。ここから、0始まりのインデックスで奇数(1、3、5、7…)にあたる要素、つまり人間が数えるときの「2番目・4番目・6番目…」に位置する要素だけを取り出して返すことを考えます。 例えば、入力が nums = [5,7,6,4,6,9,3,6,2] の場合、出力は [7, 4, 9, 6] になります。 解き方の手順 この問題は、Pythonのリストスライシング(スライス記法)を使うことで簡単に解決できます。 インデックス1から処理を開始し、リストの末尾まで、ステップを2ずつ増やしながら要素を取得します。 そのため、スライスの構文は

  2. 【Python】リスト内の重複を除いた値の平均を求めるプログラム

    この記事では、重複した値が含まれる可能性のある高さ(数値)のリストから、重複を除いた一意な要素のみの平均値を求めるPythonプログラムを紹介します。問題の概要たとえば、次のようなリストが入力として与えられたとします。heights = [96, 25, 83, 96, 33, 83, 24, 25]このリストには 96、83、25 が重複して含まれています。一意な要素だけを取り出すと [96, 25, 83, 33, 24] となり、その合計は 96 + 25 + 83 + 33 + 24 = 261、平均は 261 ÷ 5 = 52.2 になります。解決のアプローチこの問題は、Python

  3. Pythonで数の「より良い」約数を見つける方法

    問題の概要 ある数 n が与えられたとき、その約数の中から条件に基づいて「より良い」約数を見つけます。2つの数 p と q を比較する際、それぞれの各位の数字の合計(桁和)が大きい方を「良い」と判断します。桁和が同じ場合は、値が小さい方を良いとみなします。 たとえば入力が n = 180 のとき、出力は 9 になります。180 の約数は [1, 2, 3, 4, 5, 6, 9, 10, 12, 15, 18, 20, 30, 36, 45, 60, 90, 180] であり、このうち桁和が最大になるのは [9, 18, 36, 45, 90, 180] の6個です。これらはいずれも桁和が 9

  4. Pythonで1からnまでの連続する要素を持つリストを生成する方法

    この記事では、数値 n が与えられたときに、1からnまでの連続した整数を要素として持つ、サイズnのリストを作成するプログラムを紹介します。例えば、入力が n = 5 の場合、出力は次のようになります。[1, 2, 3, 4, 5]解決のアプローチこの問題は、Pythonのリスト内包表記(リストコンプリヘンション)を使うことで、簡潔かつ効率的に解くことができます。手順は以下の通りです。リスト内包表記を活用して問題を解決します。range() 関数を使用し、1からnまでの各値 i に対して i を要素とするリストを生成します。range() の第1引数には下限値として 1 を指定し、第2引数には上

  5. Pythonのスライス操作でリストを反転させる方法

    Pythonでは、スライス(リストスライシング)を使うことで、ループや組み込み関数に頼らずにリストを簡単に反転させることができます。この記事では、n個の要素を持つリスト nums を、スライス操作だけで逆順にする方法を解説します。問題の例たとえば、次のようなリストが入力として与えられたとします。nums = [5,7,6,4,6,9,3,6,2]この場合、期待される出力は以下の通りです。[2, 6, 3, 9, 6, 4, 6, 7, 5]解き方のポイントPythonのスライス構文は、コロンで区切って最大3つのパラメータを指定できます。それぞれの意味は次の通りです。第1引数(start): ス

  6. Pythonでリスト内の奇数要素の合計を求める方法

    n個の要素を持つリスト nums が与えられたとします。このリストに含まれるすべての奇数要素の合計を求める必要があります。問題の例たとえば、入力が以下のような場合を考えてみましょう。nums = [5, 7, 6, 4, 6, 9, 3, 6, 2]このリストに含まれる奇数は 5, 7, 9, 3 の4つであり、その合計は 5 + 7 + 9 + 3 = 24 となります。したがって、出力は 24 になります。解決のアプローチこの問題は、Pythonのリスト内包表記(list comprehension)を使うことで、簡潔に解くことができます。手順は以下のとおりです。リスト内包表記を使って、n

  7. 【Python】len()関数を使わずにリストの長さを求めるプログラムの書き方

    Pythonでは通常、リストの長さを取得する際に組み込み関数の len() を使用します。しかし、状況によっては len() や size() といった長さを返す関数を一切使わずに、リストの要素数を求めなければならないケースがあります。 例えば、次のようなリストが与えられた場合を考えてみましょう。 nums = [5, 7, 6, 4, 6, 9, 3, 6, 2] このリストには9個の要素が含まれているため、期待される出力は「9」です。本記事では、len() を使わずにこの値を求める方法を解説します。 解決のアプローチ:map()とsum()を活用する len() を使用しない代わりに、m

  8. Pythonでリストの各要素を絶対値に変換する方法

    正の数と負の数が混在した数値リスト nums があるとします。このリストを更新し、最終的なリストには各要素の絶対値だけが含まれるようにしたい場合があります。 たとえば、入力が nums = [5,-7,-6,4,6,-9,3,-6,-2] のとき、期待される出力は次のとおりです。 [5, 7, 6, 4, 6, 9, 3, 6, 2] 解決のアプローチ この問題は、Pythonの map() 関数とリスト変換を組み合わせることで簡潔に解決できます。手順は以下のとおりです。 引数 x を受け取り、abs(x) を返す無名関数(ラムダ式)を定義する map() メソッドを使って、nums の各要

  9. Pythonで解くミニオンゲーム:勝者の名前とスコアを求める方法

    この記事では、「ミニオンゲーム」と呼ばれる文字列ゲームについて、勝者の名前とスコアを求めるPythonプログラムをわかりやすく解説します。 ゲームのルール アマル(Amal)とビマル(Bimal)という2人のプレイヤーが、同じ文字列 s を使って対戦します。ルールは以下の通りです。 両プレイヤーとも同じ文字列 s を持ちます。 それぞれ、s の文字を使って部分文字列(サブストリング)を作ります。 ビマルは子音で始まる部分文字列だけを作ります。 アマルは母音で始まる部分文字列だけを作ります。 両者が作成可能なすべての部分文字列を作り終えた時点でゲーム終了です。 スコアの計算方法 採点基準

  10. Pythonで文字列をk個ごとのパーティションに分割し重複文字を除去する方法

    問題の概要 文字列 s と整数値 k が与えられます。ここで、k は文字列 s の長さ n の約数であるとします。このとき、s をサイズ k の部分文字列 ti に n/k 個に分割できます。さらに、これらの ti を使って、次の条件を満たす文字列 ui を作成します。 ui を構成する文字は、ti に含まれる文字の部分列であること ui 内では同じ文字が繰り返し現れないようにする(各文字の出現頻度を 1 回にする) 私たちの目的は、これらの文字列 ui をすべて求めることです。 入力例 たとえば、s = MMPQMMMRM、k = 3 が与えられた場合、出力は [MP, QM, MR]

  11. Pythonで2つのタイムスタンプの差を秒単位で求める方法

    問題の概要「Day dd Mon yyyy hh:mm:ss +/-xxxx」という形式で表された2つの時刻が与えられます。ここで、Dayは先頭が大文字の3文字の曜日名、Monは3文字の月名、そして「+」または「-」に続くxxxxはタイムゾーンを表します。たとえば「+0530」はGMTより5時間30分進んでいることを意味します(dd、hh、mm、ssなどのその他の項目は説明不要でしょう)。この2つのタイムスタンプの差を、秒単位の絶対値として求めるのが目的です。解決のアプローチPythonでこの問題を解くには、標準ライブラリのdatetimeモジュールを使用します。strptime()関数を使う

  12. Pythonで直角三角形の斜辺中点と底辺がなす角度を求める方法

    問題概要直角三角形ABCがあり、2つの辺ABとBCの長さが与えられているとします。斜辺ACの中点をMとしたとき、点Mと底辺BCがなす角度を求めるのがこの記事の目的です。例として ab = 6、bc = 4 を入力すると、出力は 56.309932474020215 になります。これは arctan(6/4) ≒ 0.9828 ラジアンであり、これを度数法に変換すると約 56.31 度になるためです。数学的な背景直角三角形では、斜辺の中点Mは外心、つまり3つの頂点から等しい距離にある点になります。したがって MB = MC が成り立ち、三角形MBCは二等辺三角形です。このことから、求めたい角度

  13. Pythonでライブラリを使わずにe^xを効率的に計算する方法

    数値 x が与えられたとき、math.exp() などのライブラリ関数を使用せずに、ex を効率的に計算する方法を解説します。e^x の計算原理:テイラー級数展開ex はテイラー級数(マクローリン級数)を用いて、次のように無限級数として表すことができます。$$e^{x} = 1 + x + \frac{x^2}{2!} + \frac{x^3}{3!} + ...$$例えば、入力が x = 5 の場合、出力は 148.4131 となります。これは e5 = 1 + 5 + (5²/2!) + (5³/3!) + ... = 148.4131... と計算されるためです。解法のアプローチこの問題

  14. Pythonプログラム:集合の要素をチェックして幸福度を求める方法

    問題の概要n個の異なる整数からなる配列 nums があるとします。さらに、互いに共通要素を持たない2つの集合 A と B も与えられています。ここで「幸福度(happiness)」というパラメータを用意し、初期値は0とします。配列 nums 内の各整数 i を順番に調べながら、次のルールに従って幸福度を更新していきます。i が集合 A に含まれている場合 → 幸福度を +1 するi が集合 B に含まれている場合 → 幸福度を -1 するすべての要素を処理し終えた後の、最終的な幸福度の値を求めるのがこの問題の目的です。具体例例えば、入力が以下のような場合を考えてみましょう。nums = [1,

  15. Pythonでドメイン(定義域)と範囲(値域)が関数を形成しているか判定するプログラム

    問題の概要 ドメイン(定義域)を表すリスト x と、範囲(値域)を表すリスト y が与えられます。両者のサイズは同じで、すべての要素は正の整数とします。このとき、対応関係「x → y」が数学的な意味で関数になっているかどうかを判定するプログラムを作成しましょう。 関数であるためには、定義域の各要素に対して、値域の要素がただ一つ対応していなければなりません。つまり、同じ x の値に異なる y の値が対応しているようなデータの場合、それは関数とは言えません。 入力例と出力例 たとえば、次のような入力を考えてみます。 x = [1, 3, 2, 6, 5] y = [1, 9, 4, 36,

  16. Pythonで多角形の外周(周囲長)を求めるプログラム

    問題の概要2次元平面上にある単純な多角形(自己交差しないポリゴン)の頂点が、順序付きの点のリストとして与えられているとします。このとき、その多角形の外周(周囲長)を求めることが目的です。例として、入力が points = [(0, 0), (0,5), (3, 5), (3,0)] の場合を考えてみましょう。このときの出力は 16 になります。これは、図からも分かるように、長さ3の辺が2本、長さ5の辺が2本存在するためです。したがって、2×5 + 2×3 = 16 となります。アルゴリズムの考え方この問題は、「隣接する2つの頂点間の距離をすべて計算して合計する」というシンプルなアプローチで解く

  17. Pythonで単語の出現頻度をカウントし、重複を除いた単語数を求める方法

    単語のリストが与えられたとき、同じ単語が複数回出現することがあります。本記事では、各単語の出現頻度を表示するとともに、重複を除いた単語の種類数をカウントするPythonプログラムを解説します。 問題の概要 例えば、入力が words = [Book, Sound, Language, Computer, Book, Language] の場合、出力は (4, 2 1 2 1) となります。これは、リストに含まれる異なる単語が4種類であり、そのうち「Book」と「Language」がそれぞれ2回出現しているためです。 解決の手順 d: 挿入された順序を保持する OrderedDict を作成し

  18. Pythonで連続する数字の出現回数をカウントする方法:itertools.groupbyの活用

    問題概要 数字のみで構成された文字列 s が与えられます。同じ数字は複数回出現することがあります。ここで、「どの数字が何回連続して出現したか」を表すペア(数字, 出現回数)のリストを返すプログラムを作成することを考えます。 この問題を効率的に解くには、Python標準ライブラリ itertools に含まれる groupby() 関数を利用すると便利です。groupby() はイテレータオブジェクトを返し、各要素は「キー(この場合は数字)」と「グループオブジェクト」のタプルとして取得できます。各グループに含まれる要素数を数えることで、連続出現回数を簡単に求められます。 入力例と出力例 例えば

  19. Pythonでポリゴンの面積を求める方法:靴ひも公式を使った実装

    はじめに2次元平面上に、単純な多角形(ポリゴン)の頂点を時計回りまたは反時計回りの順に並べた座標リストが与えられたとします。このとき、その多角形の面積を計算するのが本記事の目的です。例えば、入力が points = [(0, 0), (0, 5), (3, 5), (3, 0)] のような場合、これは幅3・高さ5の長方形を表しているため、出力は 15.0 となります。解法の考え方:靴ひも公式(Shoelace Formula)この問題は、有名な靴ひも公式(測量士の公式)を使うことで効率的に解けます。隣り合う2頂点ごとに外積 x1*y2 - y1*x2 を計算し、それらをすべて足し合わせて絶対値

  20. 会社名から最も多く出現する上位3文字を抽出するPythonプログラム

    文字列として会社名が与えられたとします。この会社名の中から最も頻繁に出現する3文字を、以下のルールに従って抽出します。出現回数が多い上位3文字を選ぶ出現回数の降順で並べる出現回数が同じ文字がある場合は、アルファベット順に並べる例えば、入力が s = TUTORIALSPOINT の場合、出力は [[3, T], [2, I], [2, O]] となります。「T」が3回、「I」と「O」がそれぞれ2回出現しているためです。解決の手順この問題は、以下の手順で解くことができます。x := 文字列 s に含まれる各文字とその出現回数を対応付けたマップ(Counter)を作成するres := 結果を格納す

Total 8994 -コンピューター  FirstPage PreviousPage NextPage LastPage CurrentPage:373/450  20-コンピューター/Page Goto:1 367 368 369 370 371 372 373 374 375 376 377 378 379