如何在不使用库的python中操作多维数组?
我有这个方法:如何在不使用库的python中操作多维数组?,python,Python,我有这个方法: def encode(message, rails): result = "" dataRails = [] activeRail = 0 # allocate multi-dimensional array...seems inefficient for r in range(rails): dataRails.append([]) # copy characters from message into one
def encode(message, rails):
result = ""
dataRails = []
activeRail = 0
# allocate multi-dimensional array...seems inefficient
for r in range(rails):
dataRails.append([])
# copy characters from message into one of the arrays, or .
for m in message:
count = 0
# for each rail either give it the character or a .
while count <= rails:
print("Count: ", str(count), " Active Rail:", str(activeRail))
if activeRail == count:
dataRails[activeRail][count] = m
else:
dataRails[activeRail][count] = "."
count += 1
activeRail += 1
if activeRail >= rails:
activeRail = 0
for r in dataRails:
print(r)
# ill calculate result once I get the above right
return result
在本例中,我希望将dataRails分配为2个元素,每个元素的长度与输入消息的长度相同。我将用message中的字母或“.”替换数组中的元素
但是,使用循环分配dataRails似乎效率很低
当我运行此操作时,会出现以下错误:
dataRails[activeRail][count] = m
IndexError: list assignment index out of range
print语句看起来像有效的索引值:
Count: 0 Active Rail: 0
感觉我的多维数组有两个问题。1) 分配和2)访问
如果有重复的问题,请发布链接。我搜索了一下。似乎相关的答案依赖于我不想使用的图书馆。我刚刚开始学习python,希望学习python的基础知识,而不是使用库
数组在python中真的有那么难吗?还是我让它变得比我需要的更难
谢谢
马特
编辑:
最终,如果消息输入是“WE ARE DIS”,则此方法的返回将是“WEERDSAI”。我正在完成一个关于的教程。我还没有完成这个方法。我被我定义的数组卡住了。我建议您保留一个字符串列表,而不是多维列表。只是几个简单的更改:
# Initialize empty rails
dataRails = [""] * rails
...
if activeRail == count:
dataRails[activeRail] += m
else:
dataRails[activeRail] += '.'
我用“我们是Dis”测试:
现在您可以处理删除非字母和正确反转方向的问题。
现在可以吗?您能显示一些所需的输入/输出吗?对于多维数组,您可以这样做:
dataRails=[[]For uuin-range(rails)]
首先,您要处理的是列表。数组是一种独立的数据类型,不能动态更改大小。但是,即使使用列表,您也无法访问超出列表大小的元素,因此您可能会将赋值更改为。apppend(m)
为什么这是预期的输出?对于循环,您使用了while
和计数器,而不是,对一个变量进行了多次检查,并完全跳过了字符串切片。一个简单的凯撒密码会短得多,所以我不确定你想要实现什么;示例中重复的字母太多,无法直观地显示。@Prune的目的是实现围栏密码,而不是Caesar密码。凯撒密码可能更简单,但这不是练习。我确实简化了这个例子。希望这能有所帮助。然而,这篇文章的目的并不是为我解决这个问题。目的是帮助我修复数组操作。明白了;密码的名字足以作为线索。您只需要一个字符串数组,每个轨道一个字符串。上面的append
注释应该会让您进入下一组问题。:-)是的,这很清楚。我把数据结构复杂化了。非常感谢。
# Initialize empty rails
dataRails = [""] * rails
...
if activeRail == count:
dataRails[activeRail] += m
else:
dataRails[activeRail] += '.'
W...A... ...s...
.e...r...D..
.. ...e...i.