繁体   English   中英

在每个其他列表项Python上使用map

[英]Using map on every other list item Python

假设我想将列表中的每个其他整数乘以2。

list = [1,2,3,4]
double = lambda x: x * 2
print map(double, list[::2])

我得到了所有其他项目的切片。

如果我想要破坏性地更改列表中的所有其他项目,那么我会返回列表[1, 4, 3, 8]而该怎么办?

您可以分配给切片:

>>> 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]

您确定要以功能方式执行此操作吗? 这可能更容易阅读:

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)]

你可以改变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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM