【发布时间】:2018-11-06 13:58:21
【问题描述】:
当函数被调用时,*args 是一个元组,所以我必须先将每个参数附加到一个列表中。然后我通过将它们的值映射到浮点数并使用 sum() 函数来对它们求和。
这段代码没有任何问题,但我收到一条警告说“未使用的变量 i”。
def function(*args):
x = []
y = 0
for i in range(len(args)):
x.append(args[y])
y += 1
x = list(map(float, x))
return sum(x)
有没有其他方法可以不使用“for i”循环并且更高效?
【问题讨论】:
-
range(len(something))在 Python 中几乎总是错误的做法。始终迭代事物本身:for y in args. -
我不确定我是否理解。为什么必须将每个参数附加到列表中?
map不仅接受列表。除其他外,您也可以给它元组。map(float, args)应该可以正常工作。 -
这是一个警告,而不是错误。你没有做错任何事,但你可以做得更好。顺便说一句,在追加时,
i和y将始终是相同的值。但是如果你使用例如它会更快。return sum(map(float, args)) -
@DanielRoseman 保存一些例外情况,例如当您想要提取子集时(例如,
'abcd'到'ab'、'bc'、'cd')并想要遍历len - x以避免 @ 987654334@。 :) -
谢谢大家的回答和建议!
标签: python python-3.x list indexing