gpt4 book ai didi

python - 一旦在我的 for 循环中满足特定条件,如何用 1 填充 N x N 矩阵第一列的其余部分?

转载 作者:行者123 更新时间:2023-12-01 23:12:59 25 4
gpt4 key购买 nike

我有一个用 0 填充的 N x N 矩阵,如下所示:

str1 = "Patrick"
str2 = "Garrick"

matrix = [[0 for _ in range(len(str1))] for _ in range(len(str2))]

我正在遍历矩阵的第一列,如果满足某个条件,我想用 1 填充第一列的其余部分,我该怎么做?到目前为止,这是我的代码:

for i in range(len(str2)):
if str2[i] == str1[0]: #this is the condition!
matrix[i:][0] = 1
break
else:
matrix[i][0] = 0

但是上面给出了一个错误,因为我们不能做 matrix[i:][0] = 1,我明白为什么,但是我还能怎样实现上面的呢?

最佳答案

纯 python 的答案是你需要迭代:

flag = 0
for i in range(len(str2)):
if str2[i] == str1[0]:
flag = 1
matrix[i][0] = flag

你可以通过预先找到索引来简化它,因为你的矩阵已经是零了:

try:
i = str2.find(str1[9])
except:
pass
else:
for j in range(i, len(str2)):
matrix[j][0] = 1

您可以在第一列作弊(对其余列无效):

try:
i = str2.find(str1[9])
except:
pass
else:
matrix[i:] = [1] + [0 for _ in range(len(str1) - 1)]

如果您愿意使用 numpy,您可以在不显式循环的情况下执行此操作,而是委托(delegate)给引擎盖下的矢量化循环:

s1 = np.array(list(str1))
s2 = np.array(list(str2))
matrix = np.maximum.accumulate(s2[:, None] == s1, axis=0)

关于python - 一旦在我的 for 循环中满足特定条件,如何用 1 填充 N x N 矩阵第一列的其余部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69508746/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com