收到三个数字和一个列表的函数,得到这三个数字的平均值,并从列表中的每个数字中减去平均值

时间:2017-04-06 15:43:39

标签: python python-2.7

我有一个关于如何改进我写的小事的问题。我对Python很新,我尝试使用for循环但是失败了,我想知道是否有更有效的方法来编写这个函数(我想用for循环但是如果你们有一个更好的主意如果你发布它,我会很感激。谢谢! 顺便说一句,收到的清单只是数字,没有任何字符串,字符等。

$Object->method()->object->object->value................
$Object->object->value.....................
etc...

2 个答案:

答案 0 :(得分:0)

使用综合列表,如:

def newList(n1,n2,n3,List):
    avg = (n1+n2+n3)/3
    print [i-avg for i in List]

使用此示例解释列表理解:

  • 让我们在List'

    中解释i
    • 对于'列表'的每个元素,它都是For循环含义。在哪里'我'将会 等于这个元素。

      列表= [1,2,3]
      第一循环:i = 1,第二循环i = 2,第三循环i = 3

    • 然后部分' i-avg'表示每个循环,i-avg的返回值 我们说' avg = 1'
      拳头循环:(i = 1)返回1-1(i-avg); 0
      第二个循环:(i = 2)返回2-1; 1
      第三循环:(i = 3)返回3-1; 2

答案 1 :(得分:0)

当你想对列表中的每个项目执行相同的操作时,Python的list comprehensions非常有用。例如,假设您有一个按如下方式定义的数字列表:

list_of_numbers = [1, 2, 3, 4, 5]

要为此列表中的每个数字添加5并将其放入名为new_list的变量中,您将使用列表解析:

new_list = [number + 5 for number in list_of_numbers]

如果您检查new_list的值,您会看到它是:

[6, 7, 8, 9, 10]

您可以在newList()方法中使用列表推导:

def newList(n1, n2, n3, list):
  average = (n1 + n2 + n3) / 3
  result_list = [item - average for item in list]
  return result_list

当你这样称呼时:

newList(1, 2, 3, [4, 5, 6])

你会得到这个结果:

[2, 3, 4]