2015-09-12 34 views
0

我的任務是這樣的:如何將整數的多個副本插入列表中間?

L是一個非負整數列表。寫一個表達式,用0的許多副本替換L的最中心元素。請注意,這裏的「最中心」被定義爲奇數長度列表的常用方式,但對於長度均勻的列表可能看起來有點不同尋常。因此,例如,如果L = [1, 2, 3, 4, 5],修改後的值L將爲[1, 2, 0, 0, 0, 4, 5],但如果L = [1, 2, 0, 3]修改後的值爲[1, 2, 3],則0(此處爲偶數長度列表的最中心元素)將替換爲0的副本0

我想出了表達是

L[len(L)/2] = [0] * L[(len(L)/2)] 

和輸出L = [1, 2, 3, 4, 5]

[1, 2, [0, 0, 0], 4, 5] 

我需要消除內部列表元件,使得零是外列表的一部分。我們被限制爲一行,並且沒有for/while循環。

+2

嘗試的切片。這太短了,所以我會再說一遍。嘗試一下。 – saulspatz

回答

1

因爲Python 2.3,所以能夠assign to slices

>>> L = [1, 2, 3, 4, 5] 
>>> L[len(L)//2:len(L)//2 + 1] = [0] * L[(len(L)//2)] 
>>> L 
[1, 2, 0, 0, 0, 4, 5] 
>>> L = [1, 2, 0, 3] 
>>> L[len(L)//2:len(L)//2 + 1] = [0] * L[(len(L)//2)] 
>>> L 
[1, 2, 3] 
1

作爲@saulspatz建議使用切片:

middle = len(L)/2 
L = L[:middle] + ([0] * L[middle]) + L[middle + 1:] 
+0

,這顯然可以按照您的要求在一行中完成,方法是不使用變量middle,並且只在使用len(L)/ 2時出現。閱讀更多關於切片我發現這個問題超級有用:http://stackoverflow.com/questions/509211/explain-pythons-slice-notation – jdf

+1

其實,我的意思是「分配到一個切片」作爲ekhumoro在他的答案,但當然,這也是有效的。 – saulspatz

+0

我從來不知道這是可能的。謝謝 :-) –

相關問題