Python的foreach向后

2024-05-14 15:21:01 发布

您现在位置:Python中文网/ 问答频道 /正文

python是否有方法反向执行foreach?我希望做一个filter()(或list comprehension)并同时反转一个list,这样我就可以避免单独做(我怀疑这样做会比较慢)。我使用的是Python2.4(不幸的是,我不得不这么做),但我也很好奇Python3.0中的列表理解解决方案是什么。

编辑这两种解决方案似乎相同:

python -m timeit -s 'x=[1,2,3,4,5]*99; filter(lambda x: x == 5, reversed(x))' 
100000000 loops, best of 3: 0.0117 usec per loop
python -m timeit -s 'x=[1,2,3,4,5]*99; x.reverse(); filter(lambda x: x == 5, x)'    
100000000 loops, best of 3: 0.0117 usec per loop

Tags: of方法lambdaloop列表解决方案filterlist
3条回答

您正在寻找内置的^{}

>>> for i in reversed(range(5)):
...     print i
... 
4
3
2
1
0

这将反向遍历序列,而不创建列表的其他副本。

这里有一个很好的编译,可以用来实现反向迭代:http://christophe-simonis-at-tiny.blogspot.com/2008/08/python-reverse-enumerate.html

在过滤的同时这样做是不对的。只需使用reverse,它将比手动操作更加优化。

相关问题 更多 >

    热门问题