1

重複の可能性:
Pythonでユーザーからの入力としてリストを取得するにはどうすればよいですか?

私は現在これを持っています:

c = eval(input("Enter a group of numbers "))
#say someone types 123
print (c)
#prints out 123

これ欲しい:

c = eval(input("Enter a group of numbers "))
#say they enter 123
print (c)
#prints out [1,2,3]

123として終わりたいです[1,2,3]。どうやってやるの?

4

7 に答える 7

6
In [32]: c=raw_input()
123

In [33]: map(int,c)
Out[33]: [1, 2, 3]

split()入力が次のような場合に使用します1 2 3

In [37]: c=raw_input()
1 2 3

In [38]: map(int,c.split())
Out[38]: [1, 2, 3]
于 2012-10-03T17:34:33.957 に答える
4

int次を使用して数値をsに変換できますmap()

>>> map(int, '123')
[1, 2, 3]
于 2012-10-03T17:35:12.710 に答える
4
>>> s = '123'
>>> [int(c) for c in s]
[1, 2, 3]
于 2012-10-03T17:35:21.737 に答える
1

どうですか?:

c = [int(x) for x in input("Enter a group of numbers ")]
#list comprehension over the input function

123と入力すると、結果は[1、2、3]になります。

OK、Python 2.xの場合(入力はintオブジェクトを返します)

c = [int(x) for x in str(input("Enter a group of numbers "))]
#added an str() function for iterating
于 2012-10-03T17:36:14.390 に答える
0

それを文字列に変換してから、文字列内の各文字を数値に変換することができます。


myStr = str(myInt)
out = [int(i) for i in myStr]

于 2012-10-03T17:36:25.607 に答える
0

まず第一に、次のとおりです。

c = eval(input("Enter a group of numbers "))

以下と同じです:

c = eval(eval(raw_input("Enter a group of numbers ")))

したがって、eval を 2 回呼び出しています。入力の詳細については、こちらを参照してください。

これは、あなたが望むもののための可能な解決策です:

c = raw_input("Enter a group of numbers "))
c = [int(i) for i in c]
print(c)

もちろん、上記の例を 2 行 (実際には 1 行でも) に減らすことができます。

于 2012-10-03T17:42:58.750 に答える
0

通常、ユーザー入力に対してevalを使用しないでください。誰かが、いたずらに評価されるステートメントを入力する可能性があります。

同じ理由で、 input()の使用は避けてくださいeval(raw_input())

ただし、ast.literal_evalを使用して、Python データ構造へのユーザー入力の Python 解釈を安全に取得できます。

>>> import ast
>>> ast.literal_eval(raw_input('Type Python input: '))
Type Python input: 1,2,3
(1, 2, 3)
>>> ast.literal_eval(raw_input('Type Python input: '))
Type Python input: [1,2,3]
[1, 2, 3]
>>> ast.literal_eval(raw_input('Type Python input: '))
Type Python input: 123
123
>>> ast.literal_eval(raw_input('type a number: '))
type a number: 0xab
171

(いずれの場合も、次の最初の行>>> Type Python input:は私が入力したものですraw_input()

数字を分割したい場合は、これを行うことができます:

>>> [int(c) for c in raw_input() if c in '1234567890']
1234
[1, 2, 3, 4]
>>> [int(c) for c in raw_input() if c in '1234567890']
123a45
[1, 2, 3, 4, 5]

数字以外がフィルタリングされていることに注意してください。

于 2012-10-03T17:44:42.240 に答える