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

Pythonで1行から複数の値を入力する方法を徹底解説【input・リスト内包表記・map関数】

C言語では、複数の変数に値を読み込む際、次のように記述します。

// 1行で3つの変数を読み込む
scanf("%d %d %d", &x, &y, &z)

残念ながら、Pythonにはscanf()に相当する関数は用意されていません。その代わり、Pythonではscanf()の書式文字列よりも強力で柔軟な「正規表現」を使うことができます。また、ユーザーから複数の値を受け取るには、主に以下の方法があります。

input()メソッドを使う方法

input()メソッドを使うと、ユーザーは1行に複数回に分けて値を入力できます。

>>> x, y, z = input(), input(), input()
40
30
10
>>> x
'40'
>>> y
'30'
>>> z
'10'

上記の出力結果を見ると、1行ずつ入力した3つの値が、それぞれ別の変数に代入されていることがわかります。ただし、この方法では渡す値の数だけinput()を呼び出す必要があるため、コードが冗長になりがちです。

リスト内包表記で複数の値を受け取る

input()を何度も書くのを避けたい場合は、リスト内包表記やmap()関数を使うと便利です。

>>> x,y,z = [int(x) for x in input().split()]
9 12 15
>>> x
9
>>> y
12
>>> z
15

このコードでは、入力された値をint型(整数)にキャストしています。もし型変換を行いたくない場合や、入力が文字列と数値など混在している場合は、次のようにシンプルに書くこともできます。

>>> x,y,z = [x for x in input().split()]
40 10 "hello"

map()関数を使う方法

もうひとつの定番手法が、map()関数を使う方法です。split()で分割した各要素に対して一括で型変換を適用できるため、コードが非常にすっきりします。

>>> x,y,z = map(int, input().split())
40 54 90
>>> x
40
>>> y
54
>>> z
90

まとめ

Pythonで1行から複数の値を入力する場合、「input().split()」を基本形とし、整数など特定の型に変換したいときはリスト内包表記かmap()関数を組み合わせるのがベストプラクティスです。特にmap(int, input().split())は競技プログラミングなどでも頻繁に使われる定番のイディオムなので、ぜひ覚えておきましょう。

  1. Javaでユーザーから複数の値を1行で入力する方法

    Javaでは、Scannerクラスを使用することで、ユーザーから1行に入力された複数の値を簡単に読み取ることができます。以下に、浮動小数点数と整数の2つの値を1行で入力するサンプルコードを示します。コード例import java.util.Scanner; public class Demo { public static void main(String[] args) { System.out.print(Enter two floating point values : ); Scanner my_scan = new Scanner(System

  2. Python Tkinterで複数のラベルを1行に表示する方法

    Python Tkinterで複数のラベルを1行に表示したい場合、ラベルのpack()メソッドを使い、すべてのラベルを同じ側(side)に揃えて配置することで実現できます。この記事では、実際のコード例を通じて、複数のラベルを横一列に並べて表示する方法をわかりやすく解説します。実装手順必要なライブラリをインポートし、tkinterフレームのインスタンスを作成します。geometry()メソッドを使って、ウィンドウのサイズを設定します。「Label 1」という名前のラベルを作成し、フォントを設定したうえで、背景色を指定してラベルを目立たせます。次に、ラベルのpack()メソッドで side=LEF