【问题标题】:Replacing a specific number of elements in one list with elements from another list用另一个列表中的元素替换一个列表中特定数量的元素
【发布时间】:2021-09-21 02:44:07
【问题描述】:

我有一个关于列表操作的问题。

假设我有以下两个列表:

a = [1,2,3,4,5,6]

b = [7,8,9]

如果我输入a 作为函数中一个参数的值,b 作为函数中的第二个输入。我如何使用索引和切片让列表 b 中的元素替换(在这种情况下)值 [4,5,6],以便输出如下所示:

答案返回:

[1,2,3,7,8,9]

【问题讨论】:

  • 您所描述的操作是否将a 的后缀替换为b?如果是这种情况,b 的大小是否总是与a 相同或更小?
  • 它是根据列表 [b] 中元素的数量对列表 [a] 中的元素进行部分替换。这有帮助吗?
  • 嗯,你现在得到了答案,所以无论如何,但是用列表替换列表可以通过多种方式完成,所以,你的帖子中没有足够的信息来回答猜测。

标签: python list indexing slice


【解决方案1】:

假设 x 是 b 的长度 使用切片删除 a 的最后 x 值。 而不是将 b 添加到 a。

def put_in(a,b):
    a = a[:len(a)-len(b)]
    a = a+b
    return a

【讨论】:

  • 谢谢,有趣的是,你所做的是将第一个列表的长度减去第二个列表的长度,然后将它们连接起来?我对python很陌生,局部变量'a'怎么可以被重新分配两次?
  • @MarkDonovan 是的,局部变量 a 可以无限次重新分配。它可以分配给另一个函数或(python中的哈希图或字典)或任何东西。 Python 变量就像 C/C++ 中指向某些数据的指针。它可以指向您指定的任何数据。
  • 几乎我已经将原始数组“a”从它的第一个索引切片到 len(a)-len(b) 的索引,这意味着我完全删除了 len(b) 元素,因为长度a 是 len(a)。从“a”中删除 len(b) 元素后,我将数组 b 添加到新的切片“a”数组中,然后再次将其放入 a。您可以根据需要重新分配“a”,您只需跟踪其当前持有的内容。如果您是 python 新手,我建议不要像我在此示例中所做的那样重新分配变量,而是在每次要保存切片数组、数字总和等时创建一个新变量。
  • 感谢你们,Albin 和 Rozem。我相信我对局部变量在 python 中的工作方式存在根本性的误解。
猜你喜欢
  • 2022-10-20
  • 2021-05-19
  • 2016-03-28
  • 2017-07-05
  • 1970-01-01
  • 2021-07-16
  • 2018-02-19
  • 2016-02-09
  • 2021-02-19
相关资源
最近更新 更多