我想將for循環中的a更改爲[4,5,6]。 此代碼只是打印:1,2,3Python:在循環運行時更改循環的參數
a = [1,2,3]
for i in a:
global a
a = [4,5,6]
print i
我想要的輸出中1, 4, 5, 6
。
我想將for循環中的a更改爲[4,5,6]。 此代碼只是打印:1,2,3Python:在循環運行時更改循環的參數
a = [1,2,3]
for i in a:
global a
a = [4,5,6]
print i
我想要的輸出中1, 4, 5, 6
。
你需要澄清的問題,因爲沒有你如何獲得所需的輸出1,4解釋,5 ,6當你的輸入是[1,2,3]。下面產生所需的輸出,但它是完全的ad-hoc和毫無意義:
i = 0
a = [1, 2, 3]
while i < len(a):
print(a[i])
if a[i] == 1:
a = [4, 5, 6]
i = 0 # edit - good catch larsmans
else:
i += 1
主要的一點是,雖然循環執行不能修改的參數for循環。從Python文檔:
它是不安全的修改序列上迭代的循環 (這隻能發生於可變序列類型,如列表)。如果 您需要修改正在迭代的列表(例如,至 重複選定的項目),則必須遍歷副本。
編輯:如果根據你試圖走網址的評論,你需要更復雜的邏輯做的不僅僅是對更換一個列表(頂層鏈接)深度優先或廣度優先的步行路程列表(第一頁中的鏈接)。在你的例子中,在潛入第1頁後,你完全失去了第2頁和第3頁的軌跡。
重置列表變量'a'時,您需要重置'i = 0'。否則,+1,因爲這似乎反映了OP的實際問題,在評論中描述。 –
的問題是分配
a = [4,5,6]
只是改變的變量,而不是基本的對象。有多種方式可以解決這個問題。一個是使用while循環一樣
a = [1,2,3]
i = 0
while i<len(a):
print a[i]
a = [4,5,6]
i += 1
打印
1
5
6
你能看到編輯嗎? – kame
如果你在代碼中的有用點處打印了id(a),你會明白爲什麼這樣做不起作用。
即使這樣的事情不工作:
a = [1,2,3]
def change_a(new_val):
a = new_val
for i in a:
change_a([4,5,6])
print i
我不認爲這是可以做到你想要什麼。打破目前的循環,並開始一個新的值與你的新價值。
什麼是真正的用例(而不是玩具問題)? –
隨着新的編輯,它使得比以前更少... –
'a'是一個網站上的鏈接。該計劃去這個網站。然後它會設置新的鏈接(4,5,6)。如果某些條件成立,則選擇該鏈接,並重新開始。 (也許你知道維基百科上的'哲學')。 'a'改變整個時間。 – kame