代码之家  ›  专栏  ›  技术社区  ›  Cristian Ramon-Cortes Lea Zus

非连续单行块重新分配

  •  1
  • Cristian Ramon-Cortes Lea Zus  · 技术社区  · 7 年前

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

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

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

    1 回复  |  直到 7 年前
        1
  •  1
  •   PM 2Ring    7 年前

    您可以使用切片分配高效而紧凑地完成此操作。

    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]