用索引替换列表中字符串中的字符

时间:2017-01-21 21:26:47

标签: string python-3.x

nm,b = input().split()
b = int(b)
n,m = [int(i) for i in nm]
s = '|'
layout = ['-------']
tal = [
['###', '# #', '# #', '# #', '###'],
['  #', '  #', '  #', '  #', '  #'],
['###', '  #', '###', '#  ', '###'],   
['###', '  #', '###', '  #', '###'],
['# #', '# #', '###', '  #', '  #'],
['###', '#  ', '###', '  #', '###'],
['###', '#  ', '###', '# #', '###'],
['###', '  #', '  #', '  #', '  #'],
['###', '# #', '###', '# #', '###'],
['###', '# #', '###', '  #', '###']
]

if b == 1:
    for i in range(5):
        print(tal[n][i][0])
        tal[n][i][0] = ''
        print(tal)

所以我试图将tal[n][i][0]的所有内容(取决于用户类型)编辑为' '(空格)。但是我在替换#时遇到了麻烦你可以看到我尝试的上面的代码。

基本上; tal[n][i][0] = ' '这是tal[0][0][0] = ' ',但不起作用。我最后会遇到一个TypeError:

我得到TypeError:' str'对象不支持项目分配

  • 所以应该怎么做?

示例 我想要这个:

tal = [
    ['###', '# #', '# #', '# #', '###'],   <-- this line here
    ['  #', '  #', '  #', '  #', '  #'],
    ['###', '  #', '###', '#  ', '###'],   
    ['###', '  #', '###', '  #', '###'],
    ['# #', '# #', '###', '  #', '  #'],
    ['###', '#  ', '###', '  #', '###'],
    ['###', '#  ', '###', '# #', '###'],
    ['###', '  #', '  #', '  #', '  #'],
    ['###', '# #', '###', '# #', '###'],
    ['###', '# #', '###', '  #', '###']
    ]

列表中[0]的所有字符串。看上面^^ 在那条线上。我想要在该行的每个字符串中,第一个索引被' '替换。 所以它看起来像:

 tal = [
        [' ##', '  #', '  #', '  #', ' ##'],   <-- this line here
        ['  #', '  #', '  #', '  #', '  #'],
        ['###', '  #', '###', '#  ', '###'],   
        ['###', '  #', '###', '  #', '###'],
        ['# #', '# #', '###', '  #', '  #'],
        ['###', '#  ', '###', '  #', '###'],
        ['###', '#  ', '###', '# #', '###'],
        ['###', '  #', '  #', '  #', '  #'],
        ['###', '# #', '###', '# #', '###'],
        ['###', '# #', '###', '  #', '###']
        ]

1 个答案:

答案 0 :(得分:2)

Python中的字符串不可变:您无法修改它们。您唯一的选择是构造一个新字符串并替换它。

所以而不是:

tal[n][i][0] = ' '

你必须写:

tal[n][i] = ' '+tal[n][i][1:] #instead of tal[n][i][0] = ' '

因此,您可以通过构造一个以空格开头的新字符串替换完整字符串

如果您想在任意位置编辑字符串(例如j),您可以写:

tal[n][i] = tal[n][i][:j]+' '+tal[n][i][j+1:] #instead of tal[n][i][j] = ' '