33

magic下面的函数怎么写?

>>> num = 123
>>> lst = magic(num)
>>>
>>> print lst, type(lst)
[1, 2, 3], <type 'list'>
4

11 回答 11

78

你是这个意思?

num = 1234
lst = [int(i) for i in str(num)]
于 2009-04-23T05:22:12.397 回答
24
a = 123456
b = str(a)
c = []

for digit in b:
    c.append (int(digit))

print c
于 2009-04-23T05:26:02.937 回答
15

你可以这样做:

>>> num = 123
>>> lst = map(int, str(num))
>>> lst, type(lst)
([1, 2, 3], <type 'list'>)
于 2009-04-23T05:23:15.283 回答
11
magic = lambda num: map(int, str(num))

然后就做

magic(12345) 

或者

magic(someInt) #or whatever
于 2009-04-23T06:19:11.950 回答
8
>>> from collections import deque
>>> def magic(num):
        digits = deque()
        while True:
            num,r = divmod(num,10)
            digits.appendleft(r)
            if num == 0:
                break
        return list(digits)

>>> magic(123)
[1, 2, 3]

根据我的时间安排,此解决方案比字符串方法 ( magic2) 快得多,即使对于较小的示例也是如此。

>>> def magic2(num):
        return [int(i) for i in str(num)]

时间:

magic

>>> timeit.timeit(setup='from __main__ import magic', stmt='magic(123)')
1.3874572762508706
>>> timeit.timeit(setup='from __main__ import magic', stmt='magic(999999999)')
3.2624468999981673

magic2

>>> timeit.timeit(setup='from __main__ import magic2', stmt='magic2(123)')
3.693756106896217    
>>> timeit.timeit(setup='from __main__ import magic2', stmt='magic2(999999999)')
10.485281719412114
于 2012-05-06T15:31:04.237 回答
5

不要使用单词列表作为变量名!它是python内置数据类型的名称。

另外,请澄清您的问题。如果您正在寻找一种方法来创建一个成员列表,请执行以下操作:

a = 123
my_list = [a]

和“pythonizing” Cannonade 的回答:

a = 123
my_list = [int(d) for d in str(a)]
于 2009-04-23T05:48:21.417 回答
3
num = map(int, list(str(num)))
于 2015-01-26T03:24:05.747 回答
3

如果它被命名为魔法,为什么不直接使用魔法:

def magic(x):
    if x < 10:
        return [x]
    else:
        return magic(x//10) + [x%10]
于 2016-03-11T12:19:18.713 回答
1

对于 python 3.x:

num = 1234
lst = list(map(int, str(num)))
于 2018-12-11T05:57:50.727 回答
0

你可以试试这个:

def convert_to_list(number):
    return list(map(lambda x: int(x), str(number)))

convert_to_list(1245)
于 2018-03-21T21:56:35.540 回答
-1

只需使用:

a= str (num)
lst = list(a)
于 2012-05-06T14:16:33.120 回答