【问题标题】:python sum right and left components in listpython对列表中的左右分量求和
【发布时间】:2016-05-13 09:46:50
【问题描述】:

我有一个清单:

key: [[1, 3, 4, 5, 3]]

我需要得到类似的列表

key: [[6, 5, 8, 7, 6]]

我怎样才能用 Python 做到这一点?

【问题讨论】:

  • 你到底想做什么????
  • 我尝试通过对第一个列表中的左右相邻组件求和来获得新的 lis
  • 那个“解释”似乎没有解释。请进一步澄清。此外,这不是一个数字列表,它是一个包含数字列表的列表。这真的是你所拥有的吗?
  • 如果你真的尝试用一些代码来解决它会更容易理解。

标签: python list sum


【解决方案1】:

一个简单的方法:

>>> my_list = [1, 3, 4, 5, 3]
>>> new_list = []    
>>> for i,x in enumerate(my_list):
...     if i==0:
...         new_list.append(my_list[-1] + my_list[i+1])
...     elif i==len(my_list)-1:
...         new_list.append(my_list[0] + my_list[i-1])
...     else:
...         new_list.append(my_list[i-1] + my_list[i+1])
... 
>>> new_list
... [6, 5, 8, 7, 6]

【讨论】:

    【解决方案2】:

    你可以使用列表推导:

    [a[i-1]+(a+a[:1])[i+1] for i in range(len(a))]
    

    这是因为:

    • a[-1] 返回列表的最后一个元素
    • a+a[:1] 将列表的第一个元素附加到末尾

    【讨论】:

      【解决方案3】:

      函数式方法:

      from operator import add
      
      list(map(add, key[1:]+key[:1], key[-1:] + key[:-1]))
      # [6, 5, 8, 7, 6]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-03-07
        • 1970-01-01
        • 2012-03-27
        • 2011-11-09
        • 1970-01-01
        • 1970-01-01
        • 2014-10-25
        • 2012-06-26
        相关资源
        最近更新 更多