web-dev-qa-db-ja.com

ユーザーからの入力として数値のリストを取得します

raw_input()を使用して数値のリストを取得しようとしましたが、コードは

numbers = raw_input()
print len(numbers)

入力[1,2,3]7の結果を与えるため、入力を文字列であるかのように解釈すると思います。リストを作成する直接的な方法はありますか? re.findallを使用して整数を抽出できたかもしれませんが、可能であれば、よりPythonicなソリューションを使用することを好みます。

50
Underyx

Python 3.xでは、これを使用します。

a = [int(x) for x in input().split()]

>>> a = [int(x) for x in input().split()]
3 4 5
>>> a
[3, 4, 5]
>>> 
76
greentec

Python構文を解析するよりも、スペースで区切られた数値のリストを解析する方がはるかに簡単です。

Python 3:

s = input()
numbers = list(map(int, s.split()))

Python 2:

s = raw_input()
numbers = map(int, s.split())
56
Sven Marnach

eval(a_string)は、文字列をPythonコードとして評価します。これは明らかに安全ではありません。 astモジュールのliteral_eval関数を使用すると、より安全な(より制限された)評価を取得できます。

raw_input()はPython 2.xでは「解釈された」入力ではなく生であるため呼び出されます。 input()は入力を解釈します。つまり、eval(raw_input())と同等です。

Python 3.xでは、input()raw_input()の機能を実行します。必要に応じて内容を手動で評価する必要があります(つまり、eval(input()))。

6
Karl Knechtel

.split()を使用できます

numbers = raw_input().split(",")
print len(numbers)

これでも文字列は得られますが、文字列のリストになります。

それらを型にマッピングする必要がある場合は、リスト内包表記を使用します。

numbers = [int(n, 10) for n in raw_input().split(",")]
print len(numbers)

anyPythonタイプを入力して、自動的にマッピングできるようにする場合 andユーザーを信頼する暗黙的にを使用できます eval

5
Sean Vieira

別の方法は、これにforループを使用することです。 「memo」という名前のリストに10個の数字を入力してほしいとしましょう

memo=[] 
for i in range (10):
    x=int(input("enter no. \n")) 
    memo.insert(i,x)
    i+=1
print(memo) 
4
Ayan Khan
num = int(input('Size of elements : '))
arr = list()

for i in range(num) :
  ele  = int(input())
  arr.append(ele)

print(arr)
3
rashedcs
a=[]
b=int(input())
for i in range(b):
    c=int(input())
    a.append(c)

上記のコードスニペットは、ユーザーから値を取得する簡単な方法です。

1
Nikhil Suresh

リストの文字列表現をjsonに渡すことができます。

import json

str_list = raw_input("Enter in a list: ")
my_list = json.loads(str_list)

ユーザーはpythonの場合と同様にリストに入力します:[2, 34, 5.6, 90]

1
Logan

答えは簡単です。これを試して。

x=input()

[1,3,5,'aA','8as']が入力として与えられていると仮定します

print len(x)

これは5の答えを与えます

print x[3]

これは'aA'を与えます

1
Achintha Avin

これで仕事ができると思う:

val = map(int, input().split()) print(list(val))

0
gii96

ユーザーからの入力として数値のリストを取得します。

これは、pythonでlistを使用して行うことができます。

L=list(map(int,input(),split()))

ここでLはリストを示し、mapは入力のマッピングに使用されます位置、intは整数データ型のユーザー入力のデータ型を指定し、split()は、スペースに基づいて数値を分割するために使用されます。

enter image description here

0
Mani Kandan

Python 3で:

input_list = [int(x.strip()) for x in input("enter list:").strip()[1:-1].split(",")]

「リストの入力」を要求するので、[2,4,5]のようなリストを入力してください。

(common_py3) PS E:\virtual_env_all\common_py3\Scripts> python
Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 16:07:46) [MSC v.1900 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> input_list = [int(x.strip()) for x in input("enter list:").strip()[1:-1].split(",")]
enter list:[2,4,5]
>>> input_list
[2, 4, 5]
>>> type(input_list)
<class 'list'>
>>>
0

これを試して、

n=int(raw_input("Enter length of the list"))
l1=[]
for i in range(n):
    a=raw_input()
    if(a.isdigit()):
        l1.insert(i,float(a)) #statement1
    else:
        l1.insert(i,a)        #statement2

リストの要素が単なる数字の場合、ステートメント1が実行され、それが文字列の場合、ステートメント2が実行されます。最終的に、必要に応じてリストl1が作成されます。

0
xarvier

この関数を使用できます(int型のみ);)

def raw_inputList(yourComment):
     listSTR=raw_input(yourComment)     
     listSTR =listSTR[1:len(listSTR)-1]
     listT = listSTR.split(",")
     listEnd=[]
     for caseListT in listT:
          listEnd.append(int(caseListT))
     return listEnd

この関数は(int型の)リストを返します!

例:

yourList=raw_inputList("Enter Your List please :")

入ったら

"[1,2,3]" 

それから

yourList=[1,2,3]          
0
WolfGangM