Python 接收三个数字和一个列表的函数,获取这三个数字的平均值,并从列表中的每个数字中减去平均值
我有一个关于如何改进我写的一些小东西的问题。我对Python相当陌生,我曾尝试使用for循环来编写此函数,但失败了,我想知道是否有更有效的方法来编写此函数(我想使用for循环来编写此函数,但如果你们有更好的想法,我将不胜感激)。谢谢 顺便说一句,收到的列表只有数字,没有任何字符串、字符等Python 接收三个数字和一个列表的函数,获取这三个数字的平均值,并从列表中的每个数字中减去平均值,python,python-2.7,Python,Python 2.7,我有一个关于如何改进我写的一些小东西的问题。我对Python相当陌生,我曾尝试使用for循环来编写此函数,但失败了,我想知道是否有更有效的方法来编写此函数(我想使用for循环来编写此函数,但如果你们有更好的想法,我将不胜感激)。谢谢 顺便说一句,收到的列表只有数字,没有任何字符串、字符等 def newList(n1,n2,n3,List): avg = (n1+n2+n3)/3 i=0 while i<len(List): List[i] -= a
def newList(n1,n2,n3,List):
avg = (n1+n2+n3)/3
i=0
while i<len(List):
List[i] -= avg
i += 1
print D
def新列表(n1、n2、n3、列表):
平均值=(n1+n2+n3)/3
i=0
而我使用综合列表,如:
def newList(n1,n2,n3,List):
avg = (n1+n2+n3)/3
print [i-avg for i in List]
要使用此示例解释列表理解,请执行以下操作:
- 让我们解释一下“我在列表中”
- 这是一个For循环的意思,对于'List'中的每个元素,其中'i'都是
等于这个元素
列表=[1,2,3]
第一个循环:i=1,第二个循环i=2,第三个循环i=3
- “i-avg”部分表示每个循环的i-avg返回值
假设“平均值=1”
第一个循环:(i=1)返回1-1(i-avg);0
第二个循环:(i=2)返回2-1;1
第三个循环:(i=3)返回3-1;2
当您希望对列表中的每个项目执行相同的操作时,Python非常有用。例如,假设您有一个数字列表,定义如下:
list_of_numbers = [1, 2, 3, 4, 5]
要向列表中的每个数字添加5,并将其放入名为new\u list
的变量中,您需要使用列表理解:
new_list = [number + 5 for number in list_of_numbers]
如果您检查new\u 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]
List[:]=[v-列表中v的平均值]
应该这样做,没有循环。for循环是如何失败的?“It failed”不是一个充分的问题陈述。请将您的while
循环替换为for
循环-尝试此操作,查看它对列表中的项的工作原理:打印(项-平均值)
,或者如果您知道列表的理解,请按照Jean Francois的注释执行。顺便说一句,惯例上说变量名称不要用大写字母。我的意思是我试图用for循环来实现它,但没有成功。。。比如,我真的不明白我应该怎么做才能用for循环完成这个问题。抱歉,如果我说得不够清楚,我是这个网站的新手+英语不是我的第一语言。@Chris_Rands你帮我想出了一个解决方案,它不涉及列表理解,而是像我最初想要的那样涉及for循环。谢谢我还不知道清单的意思,但谢谢你!我试着在我的回答中解释这个解释和另一个答案,我想我现在非常理解列表的理解,谢谢!哦,我想知道,为什么在函数中使用print?例如,如果你想存储在列表中,你可以附加它或其他东西,print除了演示之外没有任何用途