【发布时间】:2015-01-03 20:43:36
【问题描述】:
感谢您查看我的问题,顺便说一下,我使用的是 Python 3,这是代码:)
scale=[1,2,3,4,5,6]
MNP = {'scale degree' : []
}
for index, value in enumerate(scale):
scale.insert(len(scale),scale[0])
del scale[0]
MNP['scale degree'].append(scale[1])
print (MNP['scale degree'])
所以,我的目标是将我称为 scale 的列表的修改版本附加到我称为 MNP 的 dict 中。 所需的输出是一个列表('scale degree',它取一个列表的原始数字(例如比例),并将其移动到列表的末尾,同时,所有的数字都会移动一个到左,如果我在函数中给出打印比例的命令会发生这种情况:
for index, value in enumerate(scale):
scale.insert(len(scale),scale[0])
del scale[0]
MNP['scale degree'].append(scale[1])
print (MNP['scale degree'])
[1, 2, 3, 4, 5, 6]
[2, 3, 4, 5, 6, 1]
[3, 4, 5, 6, 1, 2]
[4, 5, 6, 1, 2, 3]
[5, 6, 1, 2, 3, 4]
[6, 1, 2, 3, 4, 5]
然而,当我尝试这样做时,我遇到了(是的,过去式)我的理解有问题。看,如果我执行命令:
print(scale[1])
然后它实际上 确实 打印数字 2,3,4,5,6,1 。这就是我使用 enumerate 函数的原因,我认为这可以解决问题。我想,也许索引号以某种方式确定了 哪个列表 会被打印出来,但这当然是错误的,即使输出相同,而且值得提到我仍然是一个观星的新手。然而,我做了一些思考,意识到它只是打印出每个修改列表的第二个值,就像我给它一个命令只打印一个版本一样,但如果我要求它追加,它就是一个不听话的小虫子整个爆炸的事情。
该死的地狱。
所以,现在,我的问题是,我如何附加比例尺的修改版本,而不仅仅是一个值?
顺便说一句,将比例作为一个整体添加是行不通的(这也是我的第一个解决方案),因为当时的输出是: [[2, 3, 4, 5, 6, 1]] [[3, 4, 5, 6, 1, 2], [3, 4, 5, 6, 1, 2]] [[4, 5, 6, 1, 2, 3], [4, 5, 6, 1, 2, 3], [4, 5, 6, 1, 2, 3]]
它一直以这种方式运行,直到达到 [1,2,3,4,5,6] * 6
提前感谢您的帮助,如果可以的话,您能否推荐一些资源,以便我可以基本了解幕后发生的事情?可能还有很多我不明白的地方(我的意思是仅与这个问题有关,当然,总的来说,我那接近理解所有要知道的东西(哈哈)。 p>
再次感谢
- 詹姆斯
P.S 一般来说,我应该等多久才能在 SE 上寻求帮助? (对于这个特殊的问题,我一直在与 if 进行决斗,以获得稳定的第 1/2 天)
P.S.S 感谢 Borodin 指出在 for 循环中操作数据是不好的做法。这应该如何正确执行?
【问题讨论】:
-
削减它的方式:你想在这里做什么?
-
您希望
MNP['scale degree']的内容在for循环之后是什么? -
您不应该在迭代列表时修改它。这只会导致问题。
-
大家好,我会把它放在描述中,谢谢你的反馈
-
您不会在任何地方附加整个
scale。语句MNP['scale degree'].append(scale[1])仅附加scale[1]- 第二个元素。如果你想追加scale的所有内容,那么你应该根据你想要的效果使用append(scale)或extend(scale)。
标签: python loops for-loop python-3.x append