如何在python中将数字转换为数字列表?
可能重复:如何在python中将数字转换为数字列表?,python,Python,可能重复: 我目前有: c = eval(input("Enter a group of numbers ")) #say someone types 123 print (c) #prints out 123 我想要这个: c = eval(input("Enter a group of numbers ")) #say they enter 123 print (c) #prints out [1,2,3] 我希望123最终成为[1,2,3]。我该怎么做 In [32]: c=raw_
我目前有:
c = eval(input("Enter a group of numbers "))
#say someone types 123
print (c)
#prints out 123
我想要这个:
c = eval(input("Enter a group of numbers "))
#say they enter 123
print (c)
#prints out [1,2,3]
我希望123
最终成为[1,2,3]
。我该怎么做
In [32]: c=raw_input()
123
In [33]: map(int,c)
Out[33]: [1, 2, 3]
如果输入类似于1 2 3
,请使用split()
:
In [37]: c=raw_input()
1 2 3
In [38]: map(int,c.split())
Out[38]: [1, 2, 3]
如果输入类似于1 2 3
,请使用split()
:
In [37]: c=raw_input()
1 2 3
In [38]: map(int,c.split())
Out[38]: [1, 2, 3]
您可以使用
map()
将数字转换为int
s:
您可以使用
map()
将数字转换为int
s:
怎么样
c = [int(x) for x in input("Enter a group of numbers ")]
#list comprehension over the input function
输入123,结果为[1,2,3]
好的,假设Python2.x(输入返回一个int对象)
怎么样
c = [int(x) for x in input("Enter a group of numbers ")]
#list comprehension over the input function
输入123,结果为[1,2,3]
好的,假设Python2.x(输入返回一个int对象)
可以将其转换为字符串,然后将字符串中的每个字符转换为数字
myStr = str(myInt)
out = [int(i) for i in myStr]
可以将其转换为字符串,然后将字符串中的每个字符转换为数字
myStr = str(myInt)
out = [int(i) for i in myStr]
首先,以下几点:
c = eval(input("Enter a group of numbers "))
同:
c = eval(eval(raw_input("Enter a group of numbers ")))
你现在打了两次电话给eval。可以找到有关的更多信息
这是您想要的解决方案:
c = raw_input("Enter a group of numbers "))
c = [int(i) for i in c]
print(c)
当然,您可以将上面的示例缩减为两行(甚至一行)。首先,以下内容:
c = eval(input("Enter a group of numbers "))
同:
c = eval(eval(raw_input("Enter a group of numbers ")))
你现在打了两次电话给eval。可以找到有关的更多信息
这是您想要的解决方案:
c = raw_input("Enter a group of numbers "))
c = [int(i) for i in c]
print(c)
当然,您可以将上面的示例缩减为两行(甚至实际上只有一行)。您通常不应该在用户输入中使用。有人可以键入一个将评估为恶作剧的语句
出于同样的原因,您应该避免使用,因为它相当于eval(raw_input())
也可能导致恶意破坏——不管是有意还是无意
但是,您可以通过以下方法将用户输入的Python解释安全地导入Python数据结构:
(在每种情况下,>>键入Python输入:
后的第一行是我在原始输入()中键入的内容。
如果要拆分数字,可以执行以下操作:
>>> [int(c) for c in raw_input() if c in '1234567890']
1234
[1, 2, 3, 4]
>>> [int(c) for c in raw_input() if c in '1234567890']
123a45
[1, 2, 3, 4, 5]
请注意,非数字已被过滤。您通常不应在用户输入中使用。有人可以键入一条语句,该语句将评估为恶作剧
出于同样的原因,您应该避免使用,因为它相当于eval(raw_input())
也可能导致恶意破坏——不管是有意还是无意
但是,您可以通过以下方法将用户输入的Python解释安全地导入Python数据结构:
(在每种情况下,>>键入Python输入:
后的第一行是我在原始输入()中键入的内容。
如果要拆分数字,可以执行以下操作:
>>> [int(c) for c in raw_input() if c in '1234567890']
1234
[1, 2, 3, 4]
>>> [int(c) for c in raw_input() if c in '1234567890']
123a45
[1, 2, 3, 4, 5]
请注意,非数字被过滤。不要使用
eval
。另外,如果您使用的是python 2,不要使用input
。这两种方法都会导致任意代码执行漏洞。我知道每个人都喜欢easy rep,但对于高质量的问答,常见问题确实需要关闭,而不是每次都用十几个相同的答案来回答。确实如此不要使用eval
。另外,如果您使用的是python 2,不要使用input
。这两种方法都会导致任意代码执行漏洞。我知道每个人都喜欢easy rep,但对于高质量的问答,常见的问题确实需要关闭,而不是每次都用十几个相同的答案来回答。这在python 2中不起作用。x@AshwiniChaudhary:会的。我刚刚用Python 2.6测试了它。我很高兴它对您有用。@Blender不,不会的,input()
将在Python2.x中返回一个整数,for循环将引发错误:TypeError:“int”对象不可编辑
@AshwiniChaudhary:糟糕,我测试了一些稍有不同的东西。这在Python2中不起作用。x@AshwiniChaudhary:会的。我刚刚用Python 2.6测试了它。我很高兴它对您有用。@Blender不,不会的,input()
将在Python2.x中返回一个整数,for循环将引发错误:TypeError:“int”对象不可编辑
@AshwiniChaudhary:我的错,我测试了一些稍有不同的东西。