>我有一个列表,比如
cases = [(1,1), (2,2), (3,3)]
尝试编写一个函数来计算每个项目并返回值:
def case_cal(cases)
for x, y in cases:
result = x+y
return result
output = case_cal(cases)
print(output)
我喜欢获得这样的输出
2
4
6
但我只得到
2
我是一个学习python的新手,我在这里缺少一些简单的东西。我可以得到任何建议吗?提前感谢!
一旦你返回了一些东西,你就离开了函数。因此,创建一个列表,将您的值附加到列表中,然后最后返回。
def case_cal(cases):
ret_values = []
for x, y in cases:
result = x+y
ret_values.append(result)
return ret_values
output = case_cal(cases)
print(*output)
在第一次迭代结束时,您的代码return
for
循环内,因此您只会看到第一个x + y
结果。
这是生成器的完美用途,它将允许您按需获取下一个x + y
计算,并提供对调用者可以对结果执行的操作的最大控制:
cases = [(1,1), (2,2), (3,3)]
def case_cal(cases):
for x, y in cases:
yield x + y
for x in case_cal(cases):
print(x)
输出:
2
4
6
您可以简单地将列表中的项目映射到sum
函数:
list(map(sum, cases))
这变成了:
[2, 4, 6]
或者,如果要单独打印项目:
for s in map(sum, cases):
print(s)
这输出:
2
4
6
如果您不需要列表中的值,您可以按如下方式处理:
cases = [(1,1), (2,2), (3,3)]
def case_cal(cases):
for x, y in cases:
result = x+y
print(result)
case_cal(cases)
只需直接打印值,而不是返回它们,因为一旦返回某些内容,就会从函数中移出。
也
cases = [(1,1), (2,2), (3,3)]
def case_cal(cases):
for x, y in cases:
print(x+y)
case_cal(cases)
你可以这样做:
cases = [(1,1), (2,2), (3,3)]
def case_cal(cases):
results = []
for x, y in cases:
results.append(x + y)
return results
output = [case_cal(cases)]
print(output)
然后你可以定义一个打印函数,如下所示:
def print_cases(cases):
for elem in cases[0]:
print(elem)
但是还有一种更Pythonic的方式:
def case_cal(cases):
return [(x + y) for (x, y) in cases]
这被称为列表理解,你将在python中经常使用它们。您可以在此处阅读有关它们的更多信息。
只需执行以下操作:
def case_calc(cases):
for x, y in cases:
print(x + y)
case_calc([(1, 1), (2, 2), (3, 3)])
干杯