列表中每隔n个项目获取一个项目

时间:2018-12-20 18:02:32

标签: python arrays list numpy

说我有以下列表:

usernames_file

切片l = [4,3,1,5,3,5,8,11,10,4,12,2,1] 以获得长度为l的块而在块之间留n项的最Python方式是什么?

例如,如果kn=2的结果应为:

k=3

4 个答案:

答案 0 :(得分:5)

使用列表理解:

numpy

import numpy as np idx = (np.arange(0, len(l), n+k)[:,None] + np.arange(n)).ravel() np.array(l)[idx] # array([ 4, 3, 5, 8, 12, 2]) 解决方案是:

bazaKontakt.Kontakt.Where(x => x.SkolaID == skolaid).ToList();

答案 1 :(得分:1)

即使您需要使用两个列表,我的理解还是列表理解,因为否则它只会生成列表列表。

a

答案 2 :(得分:0)

可能的解决方法是

l = [4,3,1,5,3,5,8,11,10,4,12]
k,n=3,2
res=[]
while l:
    res+=l[:n]
    l=l[n+k:]
print(res)

这可能在pythonicizity方面进行了优化。

答案 3 :(得分:0)

下面是使用切片的另一种解决方案

l = np.array([4,3,1,5,3,5,8,11,10,4,12,2,1])
A = l[:][::5]
B = l[1:][::5] 
final = np.insert(B, np.arange(len(A)), A)
# array([ 4,  3,  5,  8, 12,  2])

l[:][::5]从第一个元素开始为您提供第5个元素,而l[1:][::5]从第二个元素开始为您提供第5个元素。然后将两者合并在一起