从list comprehension直接返回slice的单行语法是什么?
列表推导式直接返回切片的单行实现方案
你要的同等逻辑单行写法非常简单,直接在列表推导式表达式后追加切片语法即可:
def foo(iterable): return [_ for _ in iterable][1:]
原理解释
- 列表推导式本身是合法的Python表达式,运算结果就是生成的列表对象,无需先赋值给变量就可以直接调用列表的切片操作。
- 上述写法和你给出的参考写法逻辑完全等价:都会先遍历整个可迭代对象生成完整列表,再截取索引1到末尾的子列表返回。
可选优化方案(仅适用于大体积可迭代对象场景)
如果你遍历的可迭代对象体积很大,不需要生成完整列表就能完成切片,可以配合itertools.islice实现更高效的写法:
from itertools import islice def foo(iterable): return list(islice(iterable, 1, None))
这种写法不会生成前半段不需要的列表元素,内存开销更低。
内容的提问来源于stack exchange,提问作者jamesB
相关产品推荐
相关产品推荐

