2012-01-20 6 views
2

私は、pythonで整数入力をリストに変換するための1行のコマンドを探しています。 以下はその状況です。Pythonで単一の整数の入力をリストに変換する

上記の行は、複数の数値を入力すると完全に機能します。例1,2,3。しかし、私は1桁の数字だけを入力するとエラーになります。例:1。整数をリストに変換することはできないと言っています。 私は、入力ごとにユーザーに質問するループを実行したくありません。だから私はのために働く1行のコマンドを望むまたはもっと桁の入力はカンマで区切られたユーザーによって与えられる。

user_input = raw_input('Enter the numbers: ') 
my_list = [int(i) for i in user_input.split(',')] 

offical documentationから:あなたはraw_inputを使用して、リスト内包してintに変換する必要があり、 -indiajoe

答えて

3

私はあなたがすることができる最も簡単な事があると思う:

mylist = map(int, raw_input('Enter the numbers: ').split(',')) 

しかし、リストの内包表記を使用していることはほぼ同じです。

+0

ありがとうございました。これは.. – indiajoe

3

をよろしくお願い

raw_inputは、入力から行を読み込み、それを変換し、文字列(末尾の改行を取り除く)を返し、それを返します。

+0

また、evalを使用して文字列リストをintに変換することもできます。mylist = map(eval、mylist) – SRC

+0

ありがとうございますが、このループを正確に回避しようとしていました。この一般的な使用のためのライナーはありませんか?もしそうでなければ、私はこのループメソッドを進めます。 – indiajoe

+0

@SRC:ユーザー入力にevalを使うのは悪い習慣です! **本当に**が必要で、必要な小切手があればそれを行うべきです。 –

1

inputeval()さんのタイプです。したがって、1,2,3と入力すると、結果はtupleになります。 1と入力すると、結果はintになります。 1の代わりに1,と入力してみてください。最初の行(mylist=[])は不要です。

+0

はい、整数の後にカンマを入力します。例:1、しかし、ユーザーに余分なカンマを付けるように丁寧に思えます。またはtry:except:ブロックをキャッチして修正する必要があります。 – indiajoe

+0

このアプローチに従えば、これは動作します: 'mylist = list(eval(raw_input( '数字を入力してください' + '、'))'。 ( 'eval'に' raw_input'とカンマをつけて)。 – Renato

関連する問題