2016-05-13 84 views
0

所以我知道,要得到一个专栏中,我不得不写如何将列表的后半部分列表为列表?

a = list(zip(*f)[0]) 

和产生的将是包含在列表中的第一个元素为f的列表。

我该如何做到每个列表获取多个元素?我试图

a = list(zip(*f)[1:19]) 

,但它只是返回一个列表的列表,其中内部列表是由每一个列表中的第i个元素。

回答

5

简单的方法是不要使用zip()。相反,使用list comprehension

a = [sub[1:19] for sub in f] 

如果它实际上是你正在寻找下半年:

a = [sub[len(sub) // 2:] for sub in f] 

,其中将包括在[1, 2, 3, 4, 5]3。如果你不想包括它:

a = [sub[(len(sub) + 1) // 2:] for sub in f] 
0

你应该更喜欢@ zondo的解决方案的性能和可读性。然而,zip基础的解决方案是可能的,看上去就像这样(在Python 2):

zip(*zip(*f)[1:19]) 

你不应该考虑拆包,荏苒,切片,拆包并重新荏苒中,虽然任何严重的代码,这个周期; )

在Python 3中,您必须将zip结果同时投射到list,这使得它更没有性感。

+0

@zondo有效的一点!增加了一些资格。 – schwobaseggl