从列表理解中返回切片
Posted
技术标签:
【中文标题】从列表理解中返回切片【英文标题】:Return slice from list comprehension 【发布时间】:2021-10-07 20:02:46 【问题描述】:从列表理解返回切片的(单行)语法是什么? 例如:
def foo(iterable):
ls = [_ for _ in iterable]
return ls[1:]
【问题讨论】:
list(iterable)
应该等同于您的for generator
。 Lambda 是函数的一种替代方案。但你可以做 list(iterable)[1:]
完全不清楚你在问什么......你似乎已经有了答案。
itertools.islice
是为任何可迭代对象获取切片的最通用解决方案。
同意之前的评论。 _
对 Python 程序员来说意味着“我可以完全忽略这个值”,而不是“我懒得给它起名字,但它的值很重要”。使用x
或i
之类的。
itertools.islice(iterator, 1, None)
删除迭代器的第一个元素。如果您希望将答案作为一个列表,请将其包装在 list(...)
中,或者将其保留为迭代器。
【参考方案1】:
为什么不能简单地对列表理解进行切片?
def foo(iterable):
return [_ for _ in iterable][1:]
【讨论】:
【参考方案2】:在你的情况下,你可以:
list(iterable)[2:]
但你也可以:
[ i for i in range(10)][2:]
out[1] [2, 3, 4, 5, 6, 7, 8, 9]
只是一些其他的技巧,从头开始切片:
[ i for i in range(10)][-2:]
out[2] [8, 9]
条件列表理解:
[ i for i in range(10) if i%2==0]
out[3] [0, 2, 4, 6, 8]
【讨论】:
以上是关于从列表理解中返回切片的主要内容,如果未能解决你的问题,请参考以下文章