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]