在循环中的指定索引处将字符串插入2D数组

时间:2018-12-12 06:55:06

标签: python arrays string indexing insert

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

我想从中收到:

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]]

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

按照您的要求,我添加另一个示例: 基本数组:

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]]

1 个答案:

答案 0 :(得分:0)

去那里:

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]]

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