【问题标题】:Using map on every other list item Python在每个其他列表项 Python 上使用 map
【发布时间】:2015-04-04 05:41:34
【问题描述】:

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

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

我得到了其他所有物品的切片。

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

【问题讨论】:

  • 不要使用内置关键字作为变量名。

标签: python list python-2.7


【解决方案1】:

您可以分配给切片:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      您可以更改 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)
      

      【讨论】:

        猜你喜欢
        • 2017-08-19
        • 1970-01-01
        • 2019-01-10
        • 2020-01-15
        • 2014-04-05
        • 2018-07-15
        • 1970-01-01
        • 2021-06-27
        • 2011-10-17
        相关资源
        最近更新 更多