我尝试使用raw_input()
来获取数字列表,但是使用代码
numbers = raw_input()
print len(numbers)
输入[1,2,3]
给出7
的结果,所以我猜它将输入解释为字符串。有没有直接的方法来制作清单?也许我可以使用re.findall
来提取整数,但如果可能的话,我宁愿使用更多的Pythonic解决方案。
答案 0 :(得分:74)
在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]
>>>
答案 1 :(得分:57)
解析由空格分隔的数字列表要容易得多,而不是试图解析Python语法:
Python 3:
s = input()
numbers = list(map(int, s.split()))
Python 2:
s = raw_input()
numbers = map(int, s.split())
答案 2 :(得分:6)
eval(a_string)
将字符串计算为Python代码。显然这不是特别安全。您可以使用literal_eval
模块中的ast
函数获得更安全(更受限制)的评估。
raw_input()
因为它是原始的,而不是“解释”的输入。 input()
解释输入,即相当于eval(raw_input())
。
在Python 3.x中,input()
执行raw_input()
以前的操作,如果您想要的话,您必须手动评估内容(例如eval(input())
)。
答案 3 :(得分:5)
您可以使用.split()
numbers = raw_input().split(",")
print len(numbers)
这仍然会给你字符串,但它将是一个字符串列表。
如果您需要将它们映射到某个类型,请使用list comprehension:
numbers = [int(n, 10) for n in raw_input().split(",")]
print len(numbers)
如果您希望能够输入任何 Python类型并自动映射和,您相信您的用户隐含,那么您可以使用eval
答案 4 :(得分:4)
另一种方法可能是使用for循环。 让我们假设您希望用户在名为" memo"的列表中输入10个数字。
memo=[]
for i in range (10):
x=int(input("enter no. \n"))
memo.insert(i,x)
i+=1
print(memo)
答案 5 :(得分:2)
num = int(input('Size of elements : '))
arr = list()
for i in range(num) :
ele = int(input())
arr.append(ele)
print(arr)
答案 6 :(得分:1)
我认为,如果没有第一个答案中提到的split(),就可以这样做。它将适用于所有没有空格的值。因此,您不必像第一个答案那样给空格,我想这更方便。
a = [int(x) for x in input()]
a
这是我的输出:
11111
[1, 1, 1, 1, 1]
答案 7 :(得分:1)
a=[]
b=int(input())
for i in range(b):
c=int(input())
a.append(c)
The above code snippets is easy method to get values from the user.
答案 8 :(得分:1)
答案是微不足道的。试试这个。
x=input()
假设[1,3,5,'aA','8as']
作为输入
print len(x)
这给出了5的答案
print x[3]
这会给'aA'
答案 9 :(得分:1)
您可以将列表的字符串表示形式传递给json:
import json
str_list = raw_input("Enter in a list: ")
my_list = json.loads(str_list)
用户像在python中一样输入列表:[2, 34, 5.6, 90]
答案 10 :(得分: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。
答案 11 :(得分:0)
您可以使用此功能(仅限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]
答案 12 :(得分:0)
在Python 3中:
R version 3.5.2 (2018-12-20)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)
Matrix products: default
locale:
[1] LC_COLLATE=English_United Kingdom.1252 LC_CTYPE=English_United Kingdom.1252 LC_MONETARY=English_United Kingdom.1252
[4] LC_NUMERIC=C LC_TIME=English_United Kingdom.1252
它会要求“输入列表”,所以只需输入[2,4,5]之类的列表
input_list = [int(x.strip()) for x in input("enter list:").strip()[1:-1].split(",")]
答案 13 :(得分:0)
我认为这可以完成工作:
val = map(int, input().split())
print(list(val))
答案 14 :(得分:0)
获取用户输入的号码列表。
这可以通过使用python中的列表来完成。
L=list(map(int,input(),split()))
此处 L 表示列表,地图用于映射具有位置的输入, int 指定位于以下位置的用户输入的数据类型整数数据类型, split()用于根据空间拆分数字。
。
答案 15 :(得分:-1)
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
答案 16 :(得分:-1)
试试这个:
numbers = raw_input()
numberlist = list(numbers)
答案 17 :(得分:-3)
您只需要输入raw_input().split()
,默认的split()就是用空格分割值。