[英]Python - Checking every item in a list against every other item efficiently
[英]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.