【问题标题】:Insert a string at a specified index in 2D array在二维数组中的指定索引处插入字符串
【发布时间】:2018-12-11 21:53:26
【问题描述】:

我想通过 2 步在数组的一行中的指定索引处插入一个字符串。从矩阵:

A=[[1, 2, 3, 4, 5],
   [6, 7, 8, 9, 10],
   [1, 1, 2, 2, 3],
   [2, 3, 4, 5, 6],
   [4, 5, 6, 7, 7],
   [5, 7, 6, 8, 9]]

我想收到:

A=[[**x**, 2, 3, 4, 5],
   [6, 7, 8, 9, 10],
   [**x**, 1, 2, 2, 3],
   [2, 3, 4, 5, 6],
   [**x**, 5, 6, 7, 7],
   [5, 7, 6, 8, 9]]

或:

A=[[1, 2, 3, 4, 5],
   [**x**, 7, 8, 9, 10],
   [1, 1, 2, 2, 3],
   [**x**, 3, 4, 5, 6],
   [4, 5, 6, 7, 7],
   [**x**, 7, 6, 8, 9]]

或:

A=[[1, 2, **x**, 4, 5],
   [6, 7, 8, 9, 10],
   [1, 1, **x**, 2, 3],
   [2, 3, 4, 5, 6],
   [4, 5, **x**, 7, 7],
   [5, 7, 6, 8, 9]]

等等。希望您理解我的问题(我使用粗体字母来区分字符串)。如果我尝试:

def r(l):
    for i in l[::2]:
        i.insert(0, 'x')
    return l

它返回:

'int' 对象没有属性 'insert'

但我想这不是我非常有价值的评论,如果我最终不知道如何完成任务......

【问题讨论】:

  • 当我尝试运行你的代码时没有发生异常——所以不清楚你在问什么。请阅读How to create a Minimal, Complete, and Verifiable Example。看起来您也想替换值,而不是将它们插入列表中。
  • 正如我所提到的 - 我在示例矩阵中犯了一个错误。谢谢你的建议。

标签: python arrays string insert


【解决方案1】:

您可以使用简单的索引来代替insert

def r(l, idx=0):
    for i in l[::2]:
        i[idx] = 'x'
    return l

>>> print(r(A))
[['x', 2, 3, 4, 5], [6, 7, 8, 9, 10], ['x', 1, 2, 2, 3], [2, 3, 4, 5, 6], ['x', 5, 6, 7, 7], [5, 7, 6, 8, 9]]

idx 参数为您提供要更改条目的索引。例如,如果您想将第 3 个元素更改为 x,则使用:

>>> print(r(A, idx=2))
[[1, 2, 'x', 4, 5], [6, 7, 8, 9, 10], [1, 1, 'x', 2, 3], [2, 3, 4, 5, 6], [4, 5, 'x', 7, 7], [5, 7, 6, 8, 9]]

【讨论】:

  • 谢谢。我注意到我使用了带有错误元素的不同矩阵。当我更改它们时,我提出的上述方法也有效。
猜你喜欢
  • 2019-05-13
  • 2011-05-17
  • 1970-01-01
  • 2015-08-11
  • 2017-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多