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谢谢你的更新代码的简要描述可以在这里看到,谢谢,这有点帮助,现在你怎么能指导我,比如我怎么能在结尾的空白单元格中填充一些符号,比如“*”