单行块重新分配

时间:2018-05-24 09:31:18

标签: python python-2.7

如下面的代码所示,我有一个块列表x和完整列表h。我想将x中存储的值重新分配到h的正确位置。

index = 0
for t1 in range(lbp, ubp):
   h[4 + t1] = x[index]
   index = index + 1

是否有人知道如何在单行/表达中编写它?

免责声明:这是一个更大项目的一部分,我尽可能地简化了问题。您可以预期矩阵大小是正确的,但如果您认为我遗漏了某些东西,请提出要求。对于测试,您可以使用以下变量值:

h = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
x = [20, 21]
lbp = 2
ubp = 4

1 个答案:

答案 0 :(得分:2)

您可以使用切片分配在左侧展开,并将x列表直接指定给h的索引,例如:

h = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
x = [20, 21]
lbp = 2
ubp = 4     
h[4 + lbp:4 + ubp] = x  # or better yet h[4 + lbp:4 + lbp + len(x)] = x
print(h)
# [1, 2, 3, 4, 5, 6, 20, 21, 9, 10]

我不确定为什么要将4添加到循环中的索引中,以及lbpubp应该是什么意思。请记住,当您选择这样的范围时,您指定给该范围的列表必须与范围的长度相同。