Python 遍历函数列表中的值对



>我有一个列表,比如

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)

在第一次迭代结束时,您的代码returnfor循环内,因此您只会看到第一个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)])

干杯

最新更新