首页 > 解决方案 > 在循环中的指定索引处将字符串插入二维数组

问题描述

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

我想从这里收到:

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

标签: pythonarraysstringindexinginsert

解决方案


你去:

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

提醒您,如果您需要对代码进行此类修改,或者您正在玩得开心,或者您的设计必须进行修改。把事情简单化!


推荐阅读