[英]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.