所以我知道要获得一个专栏,我必须写
a = list(zip(*f)[0])
,结果a将是一个包含f。
列表中第一个元素的列表如何为每个列表获取多个元素?我试过了
a = list(zip(*f)[1:19])
但它只返回了一个列表列表,其中内部列表由每个列表中的第i个元素组成。
答案 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
,这样做会更不容易。