Python 2.7 takewhile()中的反向计数?蟒蛇2.7

Python 2.7 takewhile()中的反向计数?蟒蛇2.7,python-2.7,list-comprehension,Python 2.7,List Comprehension,我只是想问一下,是否可以使用takewhile()将此代码转换为列表理解?我用的是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, xrang

我只是想问一下,是否可以使用takewhile()将此代码转换为列表理解?我用的是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
遗憾的是,输出是一个空列表:

[]
我认为原因是xrange(n)上的值从0开始,这就是为什么它没有给出我想要的输出

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


对于这种进退两难的局面,你能给我一些建议吗?我将不胜感激。如果此问题有重复项,请告诉我。

Xrange可称为
Xrange(1,n+1)
,以获取所需列表。您也可以将其称为
xrange(n,1,-1)
,以直接获得反向列表