Python 如何替换多维数组中的值?

Python 如何替换多维数组中的值?,python,python-2.7,python-3.x,Python,Python 2.7,Python 3.x,我试图让多维数组工作,其中用户字符串填充在单元格中。 我一直在寻找在多维数组中更新用户值的方法 def createMultiArray(self,usrstrng,Itmval): #creates a multidimensional array, where usrstrng=user input, Itmval=width ArrayMulti=[[" " for x in range(Itmval)]for x in range(Itmval)]

我试图让多维数组工作,其中用户字符串填充在单元格中。 我一直在寻找在多维数组中更新用户值的方法

  def createMultiArray(self,usrstrng,Itmval):
    #creates a multidimensional array, where usrstrng=user input, Itmval=width        
    ArrayMulti=[[" " for x in range(Itmval)]for x in range(Itmval)]

    # need to update user values, therefore accessing index to update values.
    for row in ArrayMulti:
        for index in range(len(row)):

            for Usrchr in usrstrng:
                row[index]= Usrchr
    print "This is updated array>>>",ArrayMulti
输入

  funs
我得到的电流输出

  This is updated array>>> [['s', 's', 's'], ['s', 's', 's'], ['s', 's', 's']]
我在找什么

  This is updated array>>> [['f', 'u', 'n'], ['s', ' ', ' '], [' ', ' ', ' ']]

空格可以用*

字符串填充。替换无效,因为它不会影响原始值

>>> test = "hallo"
>>> test.replace("a", " ")
'h llo'
>>> test
'hallo'
相反,您需要通过索引访问列表:

for row in ArrayMulti:
    for index in range(len(row)):
        row[index] = "a"
如果你提供一个更精确的问题,并将你想要达到的结果添加到这个问题中,我可以给你一个更精确的答案

我放弃了以前的解决方案,因为它不是您想要的

def UserMultiArray(usrstrng, Itmval):
    ArrayMulti=[[" " for x in range(Itmval)] for x in range(Itmval)]

    for index, char in enumerate(usrstrng):
        ArrayMulti[index//Itmval][index%Itmval] = char
    return ArrayMulti


>>> stack.UserMultiArray("funs", 3)
[['f', 'u', 'n'], ['s', ' ', ' '], [' ', ' ', ' ']]
这个小把戏使用整数除法:

[0,1,2,3,4]/3->0,0,0,1,1

和模运算符:

[0,1,2,3,4]%3->0,1,2,0,1


这应该是可行的,只需要在字符串中移动,只要在矩阵中移动,就只需要知道在以前的迭代中使用了多少个字符

offset = 0
for row in ArrayMulti:
    if len(usrstrng) > offset
        for index in range(len(row)):
            if len(usrstrng) == offset + index
                break
            row[index] = usrstrng[offset + index]
    else:
        break
    offset += len(row)
编辑

你也可以这样做

[[usrstrng[i*Itmval + j] if len(urstring) > i*Itmval + j else ' ' for j in range(Itmval)] for i range(Itmval)]

为什么要在usrstrng上循环以替换空格字符?@James i试图用字符串的每个字符替换单元格的每个值,但一旦替换,字符串中将不再有空格,因此后续调用replace将不起任何作用。@dbliss我已更新当前问题的Arraymulti中的原始代码,我已在其中使用多维数组对其进行初始化…现在我使用for循环将字符串的每个值放入后续单元格中。参数为usermultiarrayhalo, 5@dbliss谢谢你的更新代码的简要描述可以在这里看到,谢谢,这有点帮助,现在你怎么能指导我,比如我怎么能在结尾的空白单元格中填充一些符号,比如“*”