2016-10-17 200 views
0

我怀疑在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] 

谢谢大家。

+0

你将需要一个循环,无论是作为列表理解还是for循环 –

回答

2
[sublist[:3] for sublist in combos] 
0

我怀疑有一个以上的方式在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]] 
相关问题