可以說我有這個名單訪問列表元素沒有for循環
x = [1,10,5,4]
,我想補充1
對列表中的每個項目。因此,輸出將是
x = [2, 11, 6, 5].
有沒有簡單的方法來做到這一點,而不使用循環?
可以說我有這個名單訪問列表元素沒有for循環
x = [1,10,5,4]
,我想補充1
對列表中的每個項目。因此,輸出將是
x = [2, 11, 6, 5].
有沒有簡單的方法來做到這一點,而不使用循環?
多麼荒謬的要求
x = [x[0]+1, x[1]+1, x[2]+1, x[3]+1]
最簡單的辦法是與循環
使用map
x = map(1 .__add__, x)
但隨後大多數人會說這就是一個循環
由OP詢問如何在'x'具有未知數量的元素時執行此操作。 –
這應該有所幫助。
y = lambda x: x+1
x = [1,10,5,4]
map(y, x)
迴圈很好。列表理解很棒。
x = [e+1 for e in x]
正如koffein說,它甚至快於地圖功能:
>>> timeit.timeit("[e+1 for e in x]","x = list(range(100))",number=100000)
0.7970689787364194
>>> timeit.timeit("map((1).__add__,x)","x = list(range(100))",number=100000)
0.8699621167282174
>>> timeit.timeit("map(y,x)","x=list(range(100));y=lambda x:x+1",number=100000)
1.8961955365813026
它甚至比map((1).__ add__,x)快一點,幾乎比map-and-lambda版本快兩倍...... – koffein
爲什麼 '無循環' 的要求?您*有*循環以對每個元素應用更改。該循環可以委託給類似於map()的東西,但它仍然需要完成。 –
另外,你有沒有嘗試過自己呢?什麼工作,什麼沒有? –
無論你做什麼,你的代碼必須在某個地方循環... – FallenAngel