如何与生成器表达式的值进行交互?例如:
def sumValues(*args):
# compute the sum of values
sumValues(abs(x) for x in range(0,10))
当范围已知时(例如,我们知道范围是 [0,10)),我们可以放一个 for 循环,但是如果范围未知怎么办?
如何与生成器表达式的值进行交互?例如:
def sumValues(*args):
# compute the sum of values
sumValues(abs(x) for x in range(0,10))
当范围已知时(例如,我们知道范围是 [0,10)),我们可以放一个 for 循环,但是如果范围未知怎么办?
它取决于你希望你的函数如何被调用,如果你想用列表、生成器或更一般的可迭代(任何可以在 for 循环中使用的东西)调用它,然后模仿内置的sum
行为
def my_sum(iterable):
total = 0
for x in iterable:
total += x
return total
并使用
my_sum(range(10))
my_sum(abs(x) for x in range(0,10))
my_sum([1,2,3,4,5,6])
如果你想模仿max
上面的行为并使用它,也喜欢my_sum(1,2)
, my_sum(1,2,3)
,my_sum(1,2,3,4,5,6,7)
等,那么
def my_sum(*argv):
total = 0
values = None
if len(argv) == 1:
values = argv[0]
else:
values = argv
for x in values:
total += x
return total
我估计。这是答案:
def sumValues(*args):
# compute the sum of values
total = 0
for item in args[0]:
total += item
return total
print(sumValues(abs(x) for x in range(0,10)))
[output] => 45