Python 如何在特定点分隔列表?
我有: 我想根据Python 如何在特定点分隔列表?,python,Python,我有: 我想根据Z列表将列表M分开,如下所示: Z = [2, 3, 2] M = [2, 6, 3, 1, 5, 8, 3] 我试过: l = [[2, 6], [3, 1, 5], [8, 3]] 但是后来我得到了一个空列表l=[]这应该更容易对列表进行切片,下面的代码可以完成这项工作: z = 0 l = list() for i, z in enumerate(M): if z == Z[0]: l.append(M[z:i+1]) z = i
Z
列表将列表M
分开,如下所示:
Z = [2, 3, 2]
M = [2, 6, 3, 1, 5, 8, 3]
我试过:
l = [[2, 6], [3, 1, 5], [8, 3]]
但是后来我得到了一个空列表
l=[]
这应该更容易对列表进行切片,下面的代码可以完成这项工作:
z = 0
l = list()
for i, z in enumerate(M):
if z == Z[0]:
l.append(M[z:i+1])
z = i+1
del Z[0]
z = z+1
这里,
idx
跟踪已处理的元素数量。要使其正常工作,我们需要sum(Z)=len(M)
这应该更容易对列表进行切片,以下代码可以完成这项工作:
z = 0
l = list()
for i, z in enumerate(M):
if z == Z[0]:
l.append(M[z:i+1])
z = i+1
del Z[0]
z = z+1
这里,idx
跟踪已处理的元素数量。为了使其正常工作,我们需要sum(Z)=len(M)
您可以执行以下操作(假设我正确理解您的问题):
这将为您提供所需的输出:
M = [2, 6, 3, 1, 5, 8, 3]
Z = [2, 3, 2]
l=[]
for z in Z:
l.append(M[0:z])
del M[0:z]
因此,您基本上只需循环执行Z
,将Z
的第一个Z
元素附加到列表l
中,然后从列表中删除这些M
您可以执行以下操作(假设我正确理解您的问题):
[[2, 6], [3, 1, 5], [8, 3]]
这将为您提供所需的输出:
M = [2, 6, 3, 1, 5, 8, 3]
Z = [2, 3, 2]
l=[]
for z in Z:
l.append(M[0:z])
del M[0:z]
因此,您基本上只需循环执行Z
,将Z
的第一个Z
元素附加到列表l
中,然后从列表M
中删除这些元素
[[2, 6], [3, 1, 5], [8, 3]]
输出:
import itertools
M = [2, 6, 3, 1, 5, 8, 3]
Z = [2, 3, 2]
[M[x[1]-x[0]:x[1]] for x in zip(Z,itertools.accumulate(Z))]
输出:
import itertools
M = [2, 6, 3, 1, 5, 8, 3]
Z = [2, 3, 2]
[M[x[1]-x[0]:x[1]] for x in zip(Z,itertools.accumulate(Z))]
使用“代码格式”选项使代码可读。此外,由于这是Python,它将方便地保留空白。错误做法使用代码格式选项使代码可读。此外,由于这是Python,它将方便地保留空白。糟糕的练习谢谢!!我把问题复杂化了。我没有多少经验,很高兴能帮上忙!也谢谢你接受了答案!享受stackoverflow并继续进行黑客攻击:)谢谢!!我把问题复杂化了。我没有多少经验,很高兴能帮上忙!也谢谢你接受了答案!享受stackoverflow并继续进行黑客攻击:)