【问题标题】:Replace all occurances of a number in a matrix python替换矩阵python中所有出现的数字
【发布时间】:2021-12-15 15:17:08
【问题描述】:

输入是一个包含矩阵的多行字符串:

input = '''22 13 17 11  0
 8  2 23  4 24
21  9  7 16  7
 6 10  3  7  5
 1 12 20 15 19'''

我必须将所有出现的 7 替换为 -1。所以输出数组是:

output = '''22 13 17 11  0
 8  2 23  4 24
21  9  -1 16  -1
 6 10  3  -1  5
 1 12 20 15 19'''

【问题讨论】:

  • 到目前为止你有什么尝试?
  • 我已经尝试过 NumPy、列表理解和使用 for 循环进行迭代的几种不同方法。
  • 怎么样,input.replace('7', '-1')
  • @sushanth 不,它也会取代 17..

标签: python array-algorithms


【解决方案1】:

您可以将其保留为字符串格式,只需使用 word-separator regexsub 您想要的所有特定数字:

import re

s = '''22 13 17 11  0
 8  2 23  4 24
21  9  7 16  7
 6 10  3  7  5
 1 12 20 15 19'''

num = 7
target = -1
print(re.sub(rf'\b{num}\b', str(target), s))

将给予:

22 13 17 11  0
 8  2 23  4 24
21  9  -1 16  -1
 6 10  3  -1  5
 1 12 20 15 19

【讨论】:

    【解决方案2】:

    你可以尝试用空格分割它,然后运行一个 for 循环。

    s = '''22 13 17 11  0
     8  2 23  4 24
    21  9  7 16  7
     6 10  3  7  5
     1 12 20 15 19'''
    
    a = s.split(" ")
    b = []
    for i in a:
        if i == "7":
            b.append("-1")
        else:
            b.append(i)
    
    c = " ".join(b)
    print(c)
    

    【讨论】:

    • 删除 if 检查的一个小技巧可能是:b.append({'7': '-1'}.get(i, i))
    猜你喜欢
    • 1970-01-01
    • 2016-11-13
    • 2022-12-03
    • 2021-10-23
    • 1970-01-01
    • 1970-01-01
    • 2014-10-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多