这是一个后续问题。之前我问过here如何在一行中将一个块列表分配到完整列表。
现在我需要执行相同的赋值,但是对完整列表的访问不是连续的。因此,如下面的代码所示,我有一个块列表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]
免责声明:这是一个更大项目的一部分,我尽可能地简化了问题。您可以预期矩阵大小是正确的,但如果您认为我遗漏了某些内容,请提出要求。
答案 0 :(得分:1)
您可以使用切片分配有效且紧凑地执行此操作。
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]