use*_*774 25 python integer list
我如何编写magic
下面的功能?
>>> num = 123
>>> lst = magic(num)
>>>
>>> print lst, type(lst)
[1, 2, 3], <type 'list'>
Run Code Online (Sandbox Code Playgroud)
Bjo*_*orn 73
你是这个意思?
num = 1234
lst = [int(i) for i in str(num)]
Run Code Online (Sandbox Code Playgroud)
Red*_*ing 17
a = 123456
b = str(a)
c = []
for digit in b:
c.append (int(digit))
print c
Run Code Online (Sandbox Code Playgroud)
Joh*_*uhy 14
你可以这样做:
>>> num = 123
>>> lst = map(int, str(num))
>>> lst, type(lst)
([1, 2, 3], <type 'list'>)
Run Code Online (Sandbox Code Playgroud)
magic = lambda num: map(int, str(num))
Run Code Online (Sandbox Code Playgroud)
然后就做
magic(12345)
Run Code Online (Sandbox Code Playgroud)
要么
magic(someInt) #or whatever
Run Code Online (Sandbox Code Playgroud)
>>> 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]
Run Code Online (Sandbox Code Playgroud)
根据我的时间,这个解决方案比字符串方法(magic2
)快得多,即使是较小的例子.
>>> def magic2(num):
return [int(i) for i in str(num)]
Run Code Online (Sandbox Code Playgroud)
时序:
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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
不要使用单词列表作为变量名!它是以数据类型构建的python的名称.
另外,请澄清你的问题.如果您正在寻找创建一个成员列表的方法,请执行以下操作:
a = 123
my_list = [a]
Run Code Online (Sandbox Code Playgroud)
和"pythonizing"Cannonade的答案:
a = 123
my_list = [int(d) for d in str(a)]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
78104 次 |
最近记录: |