qwe*_*url 2 python list-comprehension
我正在努力实现的目标:
l = []
n = 100
while (n):
l.append(n//2)
n //= 2
print(l)
# [50, 25, 12, 6, 3, 1, 0]
Run Code Online (Sandbox Code Playgroud)
我试过的:
>>> from itertools import takewhile
>>> n = 100
>>> [(n := n//2) for _ in takewhile(lambda x: x > 0, [n] * n)]
[50, 25, 12, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, ... 0, 0, 0]
Run Code Online (Sandbox Code Playgroud)
这显然行不通,而且我也不喜欢创建大小数组的想法n
......
from math import log2, floor
n = 100
l = [n//(2**x) for x in range(1, floor(log2(n))+2)]
Run Code Online (Sandbox Code Playgroud)
这将l
作为[50, 25, 12, 6, 3, 1, 0]
. 如果您不想要 0,请将 更改+2
为+1
。
归档时间: |
|
查看次数: |
63 次 |
最近记录: |