【问题标题】: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 程序员来说意味着“我可以完全忽略这个值”,而不是“我懒得给它起名字,但它的值很重要”。使用xi 之类的。
  • itertools.islice(iterator, 1, None) 删除迭代器的第一个元素。如果您希望将答案作为一个列表,请将其包装在 list(...) 中,或者将其保留为迭代器。

标签: python list-comprehension slice one-liner


【解决方案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]
    

    【讨论】:

      猜你喜欢
      • 2015-03-18
      • 2019-07-17
      • 1970-01-01
      • 2017-04-01
      • 1970-01-01
      • 2018-04-17
      • 2018-05-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多