打印一个包含所有可能均值的数组

print an array with all the possible mean

假设我有一个列表 '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 存在重复,它会算在内。

您可以使用 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]

您有几个任务要完成:

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