2017-02-25 29 views
1

我只是想问一下,如果有可能将此代码转换为带有takewhile()的列表理解吗?我正在使用python2.7。需要反向计数()? Python2.7

我有这样的代码:

n=4 
c=[] 
while n!=0: 
    c.append(n) 
    n-=1 
print c 

输出是:

[4,3,2,1] 

我想代码与takewhile()

我试过,但转变成一个列表理解不运气:

from itertools import takewhile 
n=4 
c=[n for n in takewhile(lambda n: n!=0, xrange(n))] 
print c 

真难输出是一个空列表:

[] 

我认为原因是,在x范围值(N),从0开始,这就是为什么它没有给我所需的输出。

有没有办法扭转takewhile迭代器(如:开始从4比1,而不是0计数到3?)

你能不能给我这种两难的一些建议吗?我会很感激。让我知道这个问题是否有重复。

回答

1

Xrange可以调用xrange(1, n+1)来获得你想要的列表。您也可以将其称为xrange (n, 1, -1)以直接获取反向列表。

+0

非常感谢Horia Coman .. :-) –