python - 在循环中的指定索引处将字符串插入二维数组
问题描述
我想我应该用矩阵来解释我的问题。
我想从这里收到:
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]]
解决方案
你去:
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]]
提醒您,如果您需要对代码进行此类修改,或者您正在玩得开心,或者您的设计必须进行修改。把事情简单化!
推荐阅读
- java - mysql 连接器抛出“Wrongargumentexception Malformed database URL”
- selenium - selenium chrome webdriver 错误:线程“主”org.openqa.selenium.SessionNotCreatedException 中的异常:无法创建新的远程会话
- spring-boot - Thymeleaf - 基于表单数据构建 URL
- angular - 如何允许文本框在其输入中接受 0-6 和 X 的模式,最大长度为 6?
- javascript - 如何在html页面上显示json响应数组
- couchbase - 索引器进程重新启动后,正在从持久的磁盘快照加载索引
- javascript - 为什么这两个代码运行不一样?
- android - 致命异常:java.lang.IllegalStateException:尝试重新打开已经关闭的对象:SQLiteDatabase:
- c# - 如何使用 C# 将 Java 输入弹出到前台
- python - 将所有python函数参数转换为json的快速方法