61

integer将 a 转换为 a的最快和最干净的方法是list什么?

例如,更改132[1,3,2]和。我有一个变量,它是一个,我希望能够比较各个数字,所以我认为将它变成一个列表是最好的,因为我可以轻松地将列表元素转换回 int 以进行数字操作。23[2,3]intint(number[0])int(number[1])

4

12 回答 12

92

先将整数转换为字符串,然后使用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]
于 2012-12-16T22:07:10.963 回答
14

此页面上已经提到了一些很棒的方法,但是对于使用哪种方法似乎有点模糊。因此,我添加了一些测量,以便您可以更轻松地自己决定:


大量使用(用于开销)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

取自此答案的代码

Duberly González Molinari 的回答:

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))可能是两者中最可取的。

那些重新发明轮子的东西很有趣,但在实际使用中可能并不那么理想。

于 2018-06-28T23:39:50.927 回答
6

最短最好的方法已经回答了,但是我首先想到的是数学方法,所以这里是:

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)

这只是另一种有趣的方法,您绝对不必在实际用例中使用这样的东西。

于 2012-12-16T22:33:59.513 回答
3
>>>list(map(int, str(number)))  #number is a given integer

它返回数字的所有数字的列表。

于 2019-05-01T11:50:49.540 回答
3
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)
于 2017-07-28T15:45:55.823 回答
2

list在转换为字符串的数字上使用:

In [1]: [int(x) for x in list(str(123))]
Out[2]: [1, 2, 3]
于 2012-12-16T22:11:59.437 回答
2

如果你有一个这样的字符串:'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']
于 2018-10-14T22:13:28.713 回答
1

您可以使用:

首先转换字符串中的值以对其进行迭代,每个值都可以转换为整数value = 12345

l = [ int(item) for item in str(value) ]

于 2018-06-04T20:39:44.223 回答
1

通过循环它可以通过以下方式完成:)

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]
于 2019-07-28T17:07:58.313 回答
-1
num = list(str(100))
index = len(num)
while index > 0:
    index -= 1
    num[index] = int(num[index])
print(num)

它打印[1, 0, 0]对象。

于 2018-06-04T18:46:33.137 回答
-1
num = 123
print(num)
num = list(str(num))
num = [int(i) for i in num]
print(num)
于 2021-10-13T19:39:41.150 回答
-1

将整数作为输入并将其转换为数字列表。

代码:

num = int(input())
print(list(str(num)))

使用 156789 输出:

>>> ['1', '5', '6', '7', '8', '9']
于 2021-07-23T06:25:11.563 回答