我正在尝试使多维数组工作,其中用户字符串填充在单元格中。 我一直在寻找更新多维数组
中的用户值的方法 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', ' ', ' '], [' ', ' ', ' ']]
空白可以用*
填写答案 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] |
=============|========|========|