说我有以下列表:
usernames_file
切片l = [4,3,1,5,3,5,8,11,10,4,12,2,1]
以获得长度为l
的块而在块之间留n
项的最Python方式是什么?
例如,如果k
和n=2
的结果应为:
k=3
答案 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个元素。然后将两者合并在一起