将integer
转换为list
的最快捷,最干净的方法是什么?
例如,将132
更改为[1,3,2]
,将23
更改为[2,3]
。我有一个变量int
,我希望能够比较各个数字,所以我认为把它变成一个列表是最好的,因为我可以做int(number[0])
,{{1很容易将list元素转换回int进行数字操作。
答案 0 :(得分:67)
首先将整数转换为字符串,然后使用map
对其应用int
:
>>> num = 132
>>> map(int, str(num)) #note, This will return a map object in python 3.
[1, 3, 2]
或使用列表理解:
>>> [int(x) for x in str(num)]
[1, 3, 2]
答案 1 :(得分:5)
最短且最好的方式已经回答了,但我想到的第一件事就是数学方法,所以这就是:
def intlist(n):
q = n
ret = []
while q != 0:
q, r = divmod(q, 10) # Divide by 10, see the remainder
ret.insert(0, r) # The remainder is the first to the right digit
return ret
print intlist(3)
print '-'
print intlist(10)
print '--'
print intlist(137)
这只是另一个有趣的方法,你绝对不必在实际使用案例中使用这样的东西。
答案 2 :(得分:2)
对转换为字符串的数字使用list
:
In [1]: [int(x) for x in list(str(123))]
Out[2]: [1, 2, 3]
答案 3 :(得分:2)
此页面上已经提到了许多很棒的方法,但是使用哪种方法似乎有些晦涩。因此,我添加了一些注意事项,以便您可以更轻松地自己决定:
已使用大量(用于开销)1111111111111122222222222222222333333333333333333333
map(int, str(num))
: import timeit
def method():
num = 1111111111111122222222222222222333333333333333333333
return map(int, str(num))
print(timeit.timeit("method()", setup="from __main__ import method", number=10000)
输出:0.018631496999999997
导入时间
def method():
num = 1111111111111122222222222222222333333333333333333333
return [int(x) for x in str(num)]
print(timeit.timeit("method()", setup="from __main__ import method", number=10000))
输出:0.28403817900000006
结果表明,第一个涉及内置方法的方法比列表理解要快得多。
import timeit
def method():
q = 1111111111111122222222222222222333333333333333333333
ret = []
while q != 0:
q, r = divmod(q, 10) # Divide by 10, see the remainder
ret.insert(0, r) # The remainder is the first to the right digit
return ret
print(timeit.timeit("method()", setup="from __main__ import method", number=10000))
输出:0.38133582499999996
list(str(123))
方法(不提供正确的输出): import timeit
def method():
return list(str(1111111111111122222222222222222333333333333333333333))
print(timeit.timeit("method()", setup="from __main__ import method", number=10000))
输出:0.028560138000000013
import timeit
def method():
n = 1111111111111122222222222222222333333333333333333333
l = []
while n != 0:
l = [n % 10] + l
n = n // 10
return l
print(timeit.timeit("method()", setup="from __main__ import method", number=10000))
输出:0.37039988200000007
在所有情况下,map(int, str(num))
是最快的方法(因此可能是最好的使用方法)。列表理解是第二快的方法(但是使用map(int, str(num))
的方法可能是两者中最理想的方法。
那些重新发明轮子的人很有趣,但在实际使用中可能不太理想。
答案 4 :(得分:1)
n = int(raw_input("n= "))
def int_to_list(n):
l = []
while n != 0:
l = [n % 10] + l
n = n // 10
return l
print int_to_list(n)
答案 5 :(得分:0)
首先转换字符串中的值以对其进行迭代,然后将每个值转换为整数value = 12345
l = [ int(item) for item in str(value) ]
答案 6 :(得分:0)
如果您有这样的字符串:'123456' 并且您想要这样的整数列表:[1,2,3,4,5,6],请使用:
>>>s = '123456'
>>>list1 = [int(i) for i in list(s)]
>>>print(list1)
[1,2,3,4,5,6]
或者如果您想要这样的字符串列表:['1','2','3','4','5','6'],请使用:
>>>s = '123456'
>>>list1 = list(s)
>>>print(list1)
['1','2','3','4','5','6']
答案 7 :(得分:0)
>>>list(map(int, str(number))) #number is a given integer
它返回所有数字的列表。
答案 8 :(得分:0)
通过循环可以通过以下方式完成:)
num1= int(input('Enter the number'))
sum1 = num1 #making a alt int to store the value of the orginal so it wont be affected
y = [] #making a list
while True:
if(sum1==0):#checking if the number is not zero so it can break if it is
break
d = sum1%10 #last number of your integer is saved in d
sum1 = int(sum1/10) #integer is now with out the last number ie.4320/10 become 432
y.append(d) # appending the last number in the first place
y.reverse()#as last is in first , reversing the number to orginal form
print(y)
答案变为
Enter the number2342
[2, 3, 4, 2]
答案 9 :(得分:-1)
将一个整数作为输入并将其转换为数字列表。
代码:
num = int(input())
print(list(str(num)))
使用 156789 输出:
>>> ['1', '5', '6', '7', '8', '9']
答案 10 :(得分:-2)
num = list(str(100))
index = len(num)
while index > 0:
index -= 1
num[index] = int(num[index])
print(num)
打印[1, 0, 0]
对象。