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

时间:2016-04-15 20:33:42

标签: 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)]

    # 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', ' ', ' '], [' ', ' ', ' ']]

空白可以用*

填写

2 个答案:

答案 0 :(得分:0)

string.replace不起作用,因为它不会影响原始值。

>>> 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

和模运算符(https://en.wikipedia.org/wiki/Modulo_operation):

  

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

答案 1 :(得分:0)

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

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

修改

你也可以这样做

    =============|========|========|
    index number |x       |y       |
    =============|========|========|
    first point  | [0][0] | [0][1] |    
    second point | [1][0] | [1][1] |                            
    third point  | [2][0] | [2][1] |                            
    =============|========|========|