假设我想将列表中的每个其他整数乘以2。
list = [1,2,3,4]
double = lambda x: x * 2
print map(double, list[::2])
我得到了所有其他项目的切片。
如果我想要破坏性地更改列表中的所有其他项目,那么我将返回列表[1, 4, 3, 8]
,该怎么办?
答案 0 :(得分:6)
您可以指定切片:
>>> list_ = [1,2,3,4]
>>> double = (2).__mul__
>>> map(double, list_[1::2])
[4, 8]
>>> list_[1::2] = map(double, list_[1::2])
>>> list_
[1, 4, 3, 8]
答案 1 :(得分:3)
您确定要以功能方式执行此操作吗?这可能更容易阅读:
for i in range(1, len(l), 2):
l[i] = l[i] * 2
或者你可以使用简单的列表理解并分配切片:
l[1::2] = [x * 2 for x in l[1::2]]
或者
l = [x * (2 if i % 2 == 1 else 1) for i, x in enumerate(l)]
答案 2 :(得分:1)
你可以改变lambda的定义
lst = [1,2,3,4]
double = lambda l: [l[x]*2 if x%2!=0 else l[x] for x in range(len(l))]
print lambda(lst)