可以说我有这个名单访问列表元素没有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