簡體   English   中英

如何從for循環追加修改后的數據? (蟒蛇)

[英]How do you append modified data from a for loop? (Python)

感謝您檢查我的問題,順便說一下我正在使用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。 這就是為什么我使用枚舉函數的原因,我認為這可以解決問題。 我以為,也許索引號以某種方式確定了要打印哪個列表 ,但這當然是錯誤的,即使輸出是相同的,並且值得一提的是,它仍然是一個注視新星的人。 但是我經過一番思考,意識到它只是打印出每個修改后的列表的第二個值,就好像我給它一個命令只打印一個版本一樣,但是如果我要求附加一個小版本,它就是一個不聽話的小蟲子。整個吹的東西。

血腥的地獄。

所以,現在,我的問題是,如何附加比例尺的修改版本,而不僅僅是單個值?

順便說一句,將比例尺整體作為附加項是可行的(這也是我的第一個解決方案),因為輸出為:[[2,3,4,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

在此先感謝您提供的任何幫助(如果可能的話),能否推薦您一些資源,以便使我對幕后發生的事情有基本的了解? 我可能仍然有很多不了解的地方(我的意思是僅就此問題而言,總的來說接近了解所有要了解的內容(哈哈))。

再次感謝

  • 詹姆士

PS我一般應該等多久才能尋求SE的幫助? (對於這個特殊的問題,我一直在努力爭取在第1/2天保持穩定)

PSS A感謝Borodin指出在for循環中對數據進行操作是一種不好的做法。 應該如何正確執行?

這是您想要的效果嗎?

>>> 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]放入列表中,因為這是為列表實現+的方式-我不能做l [1:] + l [0]。

我認為會有所幫助。 它具有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])]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM