如何从for循环中追加修改后的数据? (蟒蛇)

时间:2014-11-07 05:37:46

标签: python loops for-loop python-3.x append

感谢您查看我的问题,顺便使用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的词典中。 所需的输出是一个列表('缩放度'取得列表的原始编号(如比例),并将其移动到列表的末尾,同时,所有数字将一个向左移动,如果我给出命令在函数内打印比例,就会发生这种情况:

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。这就是我使用枚举函数的原因,我认为这可以解决问题。我想,也许索引号确定 哪个列表 会打印掉,但这当然是错误的,即使输出相同,而且&#&# 39;值得一提的是,我仍然是一个观星新手。然而,我做了一些思考,并意识到它只是打印出每个修改列表的第二个值,就像我给它一个命令只打印一个版本一样,但如果我是一个不听话的小bug要求它追加整个吹制的东西。

血腥的地狱。

所以,现在,我的问题是,我如何附加比例的修改版本,而不仅仅是单个值?

顺序添加比例确实顺便工作(这也是我的第一个解决方案),因为输出是:     [[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.S我应该等多久才能在SE寻求帮助? (对于这个特殊的问题,我已经决定如果能够获得稳定的第1/2天)

P.S.S感谢Borodin指出在for循环中操纵数据是不好的做法。该如何正确执行?

2 个答案:

答案 0 :(得分:0)

这是你之后的影响吗?

>>> l = [1,2,3,4]
>>> l.append(list.pop())
[2,3,4,1]

或者如果你想要展开一点:

>>> l = [1,2,3,4]
>>> e = list.pop()
>>> l.append(e)
[2,3,4,1]

在这两种情况下,我们都会从列表中删除第一个元素,并将其粘贴在列表的末尾 - 我认为这就是您所追求的内容。

或者,如果您不想修改原始列表:

>>> l = [1,2,3,4]
>>> l[1:]+[l[0]]    
[2,3,4,1]

在这里,我们只是重新组合切片 - 原始列表不变。请注意,我必须将l [0]放入列表中,因为这是列表实现+的方式 - 我不能做[1:] + l [0]。

答案 1 :(得分:0)

我认为this会有所帮助。它有rotate(n),可以将列表元素移动n个地方。

import collections
my_list = []
d = collections.deque([1,2,3,4,5])
for i in range(5):
    d.rotate(-1)
    my_list.append(d)
print my_list

输出:

[deque([1, 2, 3, 4, 5]), deque([1, 2, 3, 4, 5]), deque([1, 2, 3, 4, 5]), deque([1, 2, 3, 4, 5]), deque([1, 2, 3, 4, 5])]