Python 非连续单行块重分配

Python 非连续单行块重分配,python,python-2.7,Python,Python 2.7,这是一个后续问题。之前我问过如何在一行中为完整列表分配块列表 现在我需要执行相同的赋值,但是当对完整列表的访问不连续时。如下面的代码所示,我有一个区块列表x和完整列表h。当不连续访问h时,我想将存储在x中的值重新分配到h的正确位置 index = 0 for t1 in range(lbp, ubp): h[1 + 2*t1] = x[index] index = index + 1 有人知道如何用一行或一个表达式写吗 如前所述,出于测试目的,您可以使用: h = [1, 2, 3

这是一个后续问题。之前我问过如何在一行中为完整列表分配块列表

现在我需要执行相同的赋值,但是当对完整列表的访问不连续时。如下面的代码所示,我有一个区块列表x和完整列表h。当不连续访问h时,我想将存储在x中的值重新分配到h的正确位置

index = 0
for t1 in range(lbp, ubp):
   h[1 + 2*t1] = x[index]
   index = index + 1
有人知道如何用一行或一个表达式写吗

如前所述,出于测试目的,您可以使用:

h = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
x = [20, 21]
lbp = 2
ubp = 4
预期结果是:

h = [1, 2, 3, 4, 5, 20, 7, 21, 9, 10]

免责声明:这是一个更大项目的一部分,我尽可能简化了问题。您可以期望矩阵大小是正确的,但如果您认为我遗漏了什么,请提出要求。

您可以使用切片分配来高效、紧凑地完成此任务

h = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
x = [20, 21]
lbp = 2
ubp = 4
h[2*lbp + 1: 2*ubp + 1: 2] = x
print(h)
输出

[1, 2, 3, 4, 5, 20, 7, 21, 9, 10]

我觉得你在这里想干什么一点也不明显。你能说清楚一点吗?