【问题标题】:print an array with all the possible mean打印具有所有可能均值的数组
【发布时间】:2018-09-25 00:32:31
【问题描述】:

假设我有一个列表“a”。现在,我想打印一个列表,其中包含所有可能的列表“a”对中的所有可能均值(仅整数)。例如:

     a = [0,0,3,4,1,2,9]

现在,我想打印一个这样的列表 b;

     b = [0,2,1,2,1,2,6,3,5]

如果 (a,b) 被视为一对,则 (b,a) 不会计数。但如果存在 a 和 b 的重复项,它会计算在内。

【问题讨论】:

  • 您要舍入非整数均值,还是不包含它们
  • 我没有包括浮动的平均值。例如:不包括 0 和 3 的平均值。

标签: python arrays list python-3.5 mean


【解决方案1】:

你可以使用itertools.combinations():

import itertools
a = [0,0,3,4,1,2,9]  
av = [int(sum(i)/2) for i in itertools.combinations(a, 2) if sum(i)%2 == 0]

输出:

[0, 2, 1, 2, 1, 2, 6, 3, 5]

【讨论】:

  • 谢谢。总结。没有 itertools 可以做到吗?
  • 是的,你可以实现自己的组合功能,但是使用 itertools 会容易得多。
  • 是的,你只需要创建一个函数来输出所有的组合。试试看,看看你想出了什么。如果遇到困难,请分享您所做的并再次发布。此外,@darxtrix 对这个问题的回答应该会有所帮助:stackoverflow.com/questions/464864/…
【解决方案2】:

你有几个任务要完成:

  1. 给定输入,输出组合
  2. 给定组合输出它们的手段
  3. 给定方法,过滤掉非整数

使用函数式编程风格,您可以使用函数组合将每个步骤放在另一个步骤中。

from itertools import combinations
from statistics import mean
a = [0,0,3,4,1,2,9]
b = list(filter(lambda x: isinstance(x, int), map(mean, combinations(a, 2))))

【讨论】:

    猜你喜欢
    • 2016-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-26
    • 1970-01-01
    • 2017-12-20
    • 2020-12-26
    • 1970-01-01
    相关资源
    最近更新 更多