Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从用户处获取数字列表作为输入_Python_List_Input - Fatal编程技术网

Python 从用户处获取数字列表作为输入

Python 从用户处获取数字列表作为输入,python,list,input,Python,List,Input,我试图使用input(Py3)/raw\u input()(Py2)来获得一个数字列表,但是使用了代码 numbers = input() print(len(numbers)) 输入[1,2,3]和1,2,3分别给出了7和5的结果–它似乎将输入解释为一个字符串。有什么直接的方法可以把它列出来吗?也许我可以使用re.findall来提取整数,但如果可能的话,我更愿意使用更具Python风格的解决方案。解析由空格分隔的数字列表要比解析Python语法容易得多: Python 3: s = inp

我试图使用
input
(Py3)/
raw\u input()
(Py2)来获得一个数字列表,但是使用了代码

numbers = input()
print(len(numbers))

输入
[1,2,3]
1,2,3
分别给出了
7
5
的结果–它似乎将输入解释为一个字符串。有什么直接的方法可以把它列出来吗?也许我可以使用
re.findall
来提取整数,但如果可能的话,我更愿意使用更具Python风格的解决方案。

解析由空格分隔的数字列表要比解析Python语法容易得多:

Python 3:

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

s = raw_input()
numbers = map(int, s.split())
eval(字符串)
将字符串计算为Python代码。显然,这并不特别安全。通过使用
ast
模块中的
literal\u eval
函数,您可以获得更安全(更受限)的评估

Python2.x中称之为
raw\u input()
,因为它获取原始输入,而不是“解释”输入
input()
解释输入,即等同于
eval(原始输入())

在Python3.x中,
input()
完成了
raw\u input()
过去所做的工作,如果需要,您必须手动计算内容(即
eval(input())

您可以使用
.split()

这仍然会为您提供字符串,但它将是一个字符串列表

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

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

如果您希望能够输入任何Python类型,并将其自动映射您可以使用将列表的字符串表示形式传递给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']
作为输入

打印透镜(x)

这个答案是5

打印x[3]


这将在Python3.x中提供
'aA'
,请使用此选项

a = [int(x) for x in input().split()]
例子 试试这个

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。

另一种方法是使用for循环来实现这个列表。 假设您希望用户在名为“memo”的列表中输入10个数字


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

从用户处获取数字列表作为输入

num = int(input('Size of elements : '))
arr = list()

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

print(arr)
这可以通过在python中使用列表来完成。

L=list(map(int,input(),split()))
这里,L表示列表,map用于将输入映射到位置,int指定用户输入的数据类型,该数据类型为整数数据类型,split()用于基于空格分割数字


我想如果你不使用第一个答案中提到的拆分()。它将适用于所有不带空格的值。所以你不必像第一个答案那样给空格,我想这更方便

a = [int(x) for x in input()]
a
这是我的输出:

11111
[1, 1, 1, 1, 1]

在Python2.7之后,raw_input()被重命名为input()。堆栈溢出如果我的输入是混合数据类型string和integer,那么如何将它们拆分并转换为list呢。输入:“aaa”345554“bbb”34“ccc”我添加了以空格分隔的内容@这是一个无关的问题,所以我建议问一个新问题。如果您想在带引号的字符串中留有空格,请从循环
s.split()
shlex.split(
)开始。将其作为新问题发布,以供鼓励,很可怕,它可能不会被标记为重复!!我不认为这比公认的答案更简单。它将每个数字作为单独的输入,放在单独的行上。这个问题意味着一行输入,只需调用一次
input
。。。也许这会有帮助。这可以接受除int以外的其他数据类型吗?i、 e.我可以用
string(x)
@StevenVascellaro-Yes替换
int(x)
,尽管表达式应该是str(x)而不是string(x),因为str是python的表达方式string@DhirajBarnwal如果您想知道那里发生了什么:
input()
读取输入+
split()
在空格+
[f(x)上分割输入对于iter中的x]
循环这些+
int
将它们转换为int。如果你想知道如何计算出来:主要是想知道你想做什么,以及你需要把哪些部分放在一起才能实现。如果你在评论中有@Dukeling做的额外两行解释,我会有+1。如果我想做呢通过
1,11,111
或者可能通过
11,1,111
?在您的程序中,它们都将是
1,1,1,1,1,1
。。。总之,这只适用于限制性很强的单位数数字。。。
num = int(input('Size of elements : '))
arr = list()

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

print(arr)
L=list(map(int,input(),split()))
a = [int(x) for x in input()]
a
11111
[1, 1, 1, 1, 1]