2017-09-23 32 views
0

初學者在這裏,但我有一個重要的問題。對於循環Fiasco和問題的使用通常爲循環

s1 = [1,2,3,4,5] 
s2 = [6,7,8,9,0] 

for x in s1: 
    y = [len(s2), x] 

y 

以此代碼爲例。它返回[5,5]。然而,在後臺,它通過[5,1],[5,2]等循環,直到達到[5,5]。

問:我如何讓它回到
[5,1],[5,2],[5,3],[5,4],[5,5] 完全一樣? ?

+1

可能重複[列表理解是什麼意思?它是如何工作的,我該如何使用它?](https://stackoverflow.com/questions/34835951/what-does-list-comprehension-mean-how-does-it-work-and-how-can-i -用它) – mkrieger1

回答

0

像這樣:

s1 = [1,2,3,4,5] 
s2 = [6,7,8,9,0] 
s3=[] 
for x in s1: 
    y = [len(s2), x] 
    s3.append(y) 
y=s3 
1

您可以y空數組,每一次使用append追加到它:

s1 = [1,2,3,4,5] 
s2 = [6,7,8,9,0] 
y = [] 
for x in s1: 
    y.append([len(s2), x]) 

print(y) # => [[5, 1], [5, 2], [5, 3], [5, 4], [5, 5]] 

您也可以使用列表理解失去了一些行:

y = [[len(s2), x] for x in s1] 
print(y) # => [[5, 1], [5, 2], [5, 3], [5, 4], [5, 5]] 
1

您的代碼重新分配一個新值到y每次迭代時都不保存,因此當你最終想要檢查它時,它只顯示最後一次迭代時分配給它的值。相反,您需要將該值保存(追加)到新列表中。最好的解決方法是使用一個簡單的列表理解:

>>> s1 = [1, 2, 3, 4, 5] 
>>> s2 = [6, 7, 8, 9, 0] 
>>> y = [[len(s2), x] for x in s1] 
>>> y 
[[5, 1], [5, 2], [5, 3], [5, 4], [5, 5]] 

...這相當於:

y = [] 

for x in s1: 
    y.append([len(s2), x]) 

......或者......

y = [] 

for x in s1: 
    y += [[len(s2), x]] 
-1

有循環內的Y,所以它被打印在每個循環中。

for x in s1: 
    y = [len(s2), x] 
    print y,