【问题标题】:Slicing a range of elements in each sublist?在每个子列表中切片一系列元素?
【发布时间】:2017-02-26 19:25:06
【问题描述】:

我怀疑在 Python 2.7 中有不止一种方法可以做到这一点,但我希望能够在组合中打印每个子列表的前三个元素。有没有办法在没有循环的情况下做到这一点?

combos = [ [1,2,3,.14], [5,6,7,.18], [9,10,11,.12], [1,2,3,.15] ]

这样打印语句的输出将显示为:

[ [1,2,3], [5,6,7], [9,10,11], [1,2,3] ]

***收到您的建议后: 我一直在努力了解这将如何在我的代码结构中工作,但列表理解可以作为 if 语句的一部分来完成,我无法识别:

p0combos = [ [1,2,3,.14], [5,6,7,.18], [9,10,11,.12], [1,2,3,.15] ]
p0 = [1, 2, 3]

if p0 not in [combo[:3] for combo in p0combos]:
    print combo[:3]
    print 'p0 not found'
else:
    print 'p0 found'
    print combo[3:4]

输出:

p0 found
[0.15]

谢谢大家。

【问题讨论】:

  • 你需要一个循环来完成这个,要么是一个列表理解,要么是一个 for 循环

标签: python list list-comprehension slice


【解决方案1】:
print [temp_list[:3] for temp_list in combos]

【讨论】:

    【解决方案2】:
    [sublist[:3] for sublist in combos]
    

    【讨论】:

      【解决方案3】:

      我怀疑在 Python 2.7 中有不止一种方法可以做到这一点

      是的,你可以很有创意。这是另一种选择

      from operator import itemgetter
      
      map(itemgetter(slice(3)), combos)
      Out[192]: [[1, 2, 3], [5, 6, 7], [9, 10, 11], [1, 2, 3]]
      

      【讨论】:

        猜你喜欢
        • 2018-08-17
        • 2013-10-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-22
        • 1970-01-01
        • 2021-03-04
        • 2021-08-03
        相关资源
        最近更新 更多