如何将列表列表的后半部分作为列表列表?

时间:2016-05-13 10:28:16

标签: python list numpy zip

所以我知道要获得一个专栏,我必须写

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

,结果a将是一个包含f。

列表中第一个元素的列表

如何为每个列表获取多个元素?我试过了

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

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

2 个答案:

答案 0 :(得分:6)

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

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

如果它实际上是你要找的下半场:

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

这将包括3中的[1, 2, 3, 4, 5]。如果您不想包含它:

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

答案 1 :(得分:0)

对于性能和可读性,你绝对应该更喜欢@ zondo的解决方案。但是,基于zip的解决方案是可行的,如下所示(在Python 2中):

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

你不应该考虑在任何严肃的代码中解压缩,压缩,切片,解包和重新压缩的循环;)

在Python 3中,您必须将zip个结果都投射到list,这样做会更不容易。