Python 如何在整数列表中使用*args?
我有一个用户整数列表:Python 如何在整数列表中使用*args?,python,variables,arguments,Python,Variables,Arguments,我有一个用户整数列表: user1 = [4,5,2,3,4] user2 = [4,2,1,3,4,4,2] 我想用*args来计算平均值 def avg(*args): sum=0 for num in avg: sum =+ num result = sum/len(avg) return result 如果我这样称呼它: avg(4,5,2,3,4) avg(4,2,1,3,4,4,2) 一切都很好。代码起作用。 但我仍然需要修改代码来实现这一点。我不明白
user1 = [4,5,2,3,4]
user2 = [4,2,1,3,4,4,2]
我想用*args来计算平均值
def avg(*args):
sum=0
for num in avg:
sum =+ num
result = sum/len(avg)
return result
如果我这样称呼它:
avg(4,5,2,3,4)
avg(4,2,1,3,4,4,2)
一切都很好。代码起作用。
但我仍然需要修改代码来实现这一点。我不明白怎么用这个
例如,用户在“我的代码”表中输入3 int,执行如下操作:
avg(userTable) // and just put a 3 args in fun
有人能告诉我怎么做吗?我需要使用变量参数作为基准
我的一个尝试是:
pkt = [44,23,0,22]
def avg(*pkt):
suma = 0
count = len(pkt)
for i in range(len(pkt)):
if pkt[i] != 0:
print(i)
sum = sum + pkt[i]
else:
count = count - 1
result= pkt[0] + pkt[1] + sum
result= result/(count+2)
print(result)
return result
avg(pkt)
但是我在计数行中遇到了一个错误。
def avg(*args)
意味着您的函数需要几个参数,但是调用avg(pkt)
会将一个列表传递给函数。您需要使用avg(*pkt)
解压该列表,以便将其内容单独传递给函数,或者当然将函数定义为def avg(args)
,以便它接受列表作为其唯一参数。我认为示例是展示args
和kwargs
的最佳方式。请注意以下事项:
def foo(*args):
打印(args)
傅(1,2,3)
产出:
(1, 2, 3)
{'a': 1, 'b': 2, 'c': 3}
args (1, 2, 3)
kwargs {'d': 4, 'e': 5, 'f': 6}
(1, 2, 3)
def条(**kwargs):
印刷品(kwargs)
巴(a=1,b=2,c=3)
产出:
(1, 2, 3)
{'a': 1, 'b': 2, 'c': 3}
args (1, 2, 3)
kwargs {'d': 4, 'e': 5, 'f': 6}
(1, 2, 3)
def foobar(*args,**kwargs):
打印('args',args)
打印('kwargs',kwargs)
foobar(1,2,3,d=4,e=5,f=6)
产出:
(1, 2, 3)
{'a': 1, 'b': 2, 'c': 3}
args (1, 2, 3)
kwargs {'d': 4, 'e': 5, 'f': 6}
(1, 2, 3)
简而言之,
args
允许函数获取任何未命名变量,kwargs
允许函数获取任何命名变量。然而,赋予它们这种特殊属性的不是名称args
和kwargs
,而是每个属性与*
和**
的明确定义:
def foo(*lol):
打印(lol)
傅(1,2,3)
产出:
(1, 2, 3)
{'a': 1, 'b': 2, 'c': 3}
args (1, 2, 3)
kwargs {'d': 4, 'e': 5, 'f': 6}
(1, 2, 3)
签出关于它们的Python文档
上述概念也适用于解包其他对象,例如
list
和set
。注意:
print([1,2,3])#>>>[1,2,3]
在哪里
print(*[1,2,3])#>>13
上述操作相当于将三个单独的参数传递给print
函数,因此与执行以下操作相同:
打印(1、2、3)
我想你想要的是suma=0
而不是sum=0
?实际上--suma
最好不要破坏内置函数。您需要确定函数是接受单个列表还是接受数量不确定的单个参数。你不能两者兼得,那将是一笔总数。那么,如何从控制台使用*args函数呢?按照您定义函数的方式,您可以使用avg(*pkt)
awesome来调用它!现在一切都清楚了!感谢您的解释和您的时间;)