获取用户输入的数字列表

我尝试使用raw_input()获取数字列表,但是使用代码

 numbers = raw_input() print len(numbers) 

输入[1,2,3]给出了7的结果,所以我猜想它将输入解释为它是一个字符串。 有什么直接的方法可以列出它? 也许我可以使用re.findall来提取整数,但如果可能的话,我宁愿使用更多的Pythonic解决方案。

在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] >>> 
 s = raw_input() numbers = map(int, s.split()) 

并添加由空格分隔的数字。

在Python3中map不再返回一个list ,所以我们需要把它包装在一个list调用中 。

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

eval(a_string)将字符串评估为Python代码。 显然这不是特别安全。 您可以使用ast模块中的literal_eval函数来获得更安全(更受限制)的评估。

raw_input()在Python 2.x中被调用,因为它是原始的,而不是“解释”的输入。 input()解释输入,即相当于eval(raw_input())

在Python 3.x中, input()执行raw_input()用来做的事情,如果这是你想要的(例如eval(input()) ),你必须手动计算内容。

你可以使用.split()

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

这仍然会给你的字符串,但它会是一个字符串列表。

如果您需要将它们映射到某个类型,请使用列表理解:

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

如果你想能够输入任何 Python类型并自动映射, 并且信任你的用户,那么你可以使用eval

另一种方法可能是为这个使用for循环。 假设你想要用户输入10个数字到一个名为“备忘录”

 memo=[] for i in range (10): x=int(input("enter no. \n")) memo.insert(i,x) i+=1 print(memo) 

尝试这个:

 numbers = raw_input() numberlist = list(numbers) 

您可以将列表的字符串表示形式传递给json:

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

用户像在python中那样输入列表: [2, 34, 5.6, 90]

答案是微不足道的。 尝试这个。

x=input()

假设[1,3,5,'aA','8as']作为输入

print len(x)

这给出了5的答案

print x[3]

这给了'aA'

你可以使用这个函数(只有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] 

试试这个,

 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你所需要的。

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

上面的代码片段是从用户获取值的简单方法。

 k = [] i = int(raw_input('enter the number of values in the list ')) l = 0 while l < i: p = raw_input('enter the string ') k.append(p) l= l+1 print "list is ", k 

你只需要输入raw_input().split()和默认的split()就是这个值被一个空格分开。

尝试这个

 numbers = raw_input() a = numbers.split(" ") 

你仍然可以使用你的代码,但你需要调整一下。 你可以使用Python 2.9或更低版本的代码:

 number = raw_input() print number 

如果你使用python 3或更高版本,你可以使用代码:

 number = input() print number