Python 按固定间隔切片列表,然后合并
如何在每个Python 按固定间隔切片列表,然后合并,python,Python,如何在每个xth索引处“列化”列表 我正在考虑这样做,先创建起始列表,然后创建两个新列表,合并它们,然后添加不能被x整除的余数 例如,间隔为2: start = [ [1, 'one'], [2, 'two'], [3, 'three'], [4, 'four'], [5, 'five'], [6, 'six'], [7, 'seven'], [8, 'eight'], [9, 'nine'], ] expected = [
x
th索引处“列化”列表
我正在考虑这样做,先创建起始列表,然后创建两个新列表,合并它们,然后添加不能被x
整除的余数
例如,间隔为2:
start = [
[1, 'one'],
[2, 'two'],
[3, 'three'],
[4, 'four'],
[5, 'five'],
[6, 'six'],
[7, 'seven'],
[8, 'eight'],
[9, 'nine'],
]
expected = [
[1, 'one', 3, 'three'],
[2, 'two', 4, 'four'],
# page break
[5, 'five', 7, 'seven'],
[6, 'six', 8, 'eight'],
# page break
[9, 'nine'],
]
只是想知道是否有一种快速的方法可以做到这一点?你在找这样的东西吗?列化平方矩阵
start = [
[1, 'one'],
[2, 'two'],
[3, 'three'],
[4, 'four'],
[5, 'five'],
[6, 'six'],
[7, 'seven'],
[8, 'eight'],
[9, 'nine'],
]
expected = [
[1, 'one', 3, 'three'],
[2, 'two', 4, 'four'],
# page break
[5, 'five', 7, 'seven'],
[6, 'six', 8, 'eight'],
# page break
[9, 'nine'],
]
a = 2
r = a*a
ans = []
for i in range(0, len(start), r):
l_tmp = start[i:i+r]
if l_tmp[::a]:
ans.append([item for sublist in l_tmp[::a] for item in sublist])
if l_tmp[1::a]:
ans.append([item for sublist in l_tmp[1::a] for item in sublist])
# You can easily add page break here
print(ans)
我同意关于这是一种奇怪的“专栏化”方式的评论。但是,这里有一个函数可以实现您所描述的功能:
def columnize(A, interval=2):
ans = []
for i in range(0,len(A), interval*2):
for j in range(min(interval, len(A)-i)):
ans.append(A[i+j] + (A[i+j+interval] if i+j+interval < len(A) else []))
return ans
def列化(A,间隔=2):
ans=[]
对于范围内的i(0,len(A),间隔*2):
对于范围内的j(最小(间隔,len(A)-i)):
ans.append(A[i+j]+(如果i+j+区间
您能检查一下您的测试用例吗?如果是这样,请解释一下您是如何得到它的?我认为1-3-5-7-9-2-4-6-8
而不是1-3-2-4-5-7-6-8-9
是列表的“列化”这对“列化”更有意义:C=2;[[y代表开始时的x[C*z:C*z+C]代表开始时的y]z代表开始时的z(len(开始)//C+1)]