【问题标题】:Insert a string to 2D array at a specified index in a loop在循环中的指定索引处将字符串插入二维数组
【发布时间】:2019-05-13 05:39:44
【问题描述】:

我想我应该用矩阵来解释我的问题。

我想从这里收到:

A=[[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 
   [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 
   [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 
   [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 
   [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]

这个:

 A=[[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 
       [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 
       [ 0, 0, 0, 0, 0, **h**, 0, 0, 0, 0, 0], 
       [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 
       [ 0, 0, 0, **h**, 0, 0, 0, 0, 0, 0, 0]]

粗体字母仅突出问题。我试过了:

def r(i):
    for k in i[-1:-4:-2]:
        for l in k[3:6:2]:
            k[l]='h'
    print (i)
r(A)

但它会返回:

[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 
['**h**', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 
['**h**', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]

这绝对不符合我的期望。我想从列表列表的最后一个元素(最后一个列表)开始在指定索引处插入字符串,从 rhe 行的某个索引开始。你能帮帮我吗?

如你所问,我再添加一个例子: 基本数组:

B=[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
   [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
   [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
   [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
   [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
   [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
   [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
   [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]

输出:

B=[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
   [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
   [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
   [0, 0, 0, 0, 0, !, 0, 0, 0, 0],
   [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
   [0, 0, 0, !, 0, 0, 0, 0, 0, 0],
   [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
   [0, !, 0, 0, 0, 0, 0, 0, 0, 0]]

【问题讨论】:

  • 标记语言这也是?此外,很难弄清楚你想要什么。也许给出您想要的输出,以便我们进行比较

标签: python arrays string indexing insert


【解决方案1】:

你去吧:

def r(i, substitution, col_start, row_stop):
    for row, R in enumerate(i):
        found = False
        for col, el in enumerate(R):
            if not found and col >= (col_start + (len(i)-1) - row) and \
                    (col % 2 == col_start % 2) and row > row_stop and \
                    (row % 2 == (len(i)-1) % 2):
                found = True
                i[row][col] = substitution
    return i
A=[[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
   [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
   [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
   [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
   [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
B=[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
   [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
   [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
   [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
   [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
   [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
   [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
   [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
r(A, 'h', 3, 1)
r(B, '!', 1, 2)

[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 'h', 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 'h', 0, 0, 0, 0, 0, 0, 0]]
[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, '!', 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, '!', 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, '!', 0, 0, 0, 0, 0, 0, 0, 0]]

提醒您,如果您需要对代码进行此类修改,或者您玩得很开心,或者您的设计必须进行修改。保持简单!

【讨论】:

  • 请注意,此功能完全适用于您要解决的问题,并且不可移植。不过,您可以尝试这样做。
猜你喜欢
  • 1970-01-01
  • 2015-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多