我有一个类似
的列表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的新手,这里缺少一些简单的东西。我可以得到任何建议吗?预先感谢!
答案 0 :(得分:2)
一旦返回某些内容,就会移出该函数。因此,创建一个列表,将您的值附加到列表中,然后最后返回。
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)
答案 1 :(得分:2)
您的代码return
位于for
循环内,在第一次迭代结束时,因此您只会看到第一个x + y
结果。
这是generator的完美用法,它将使您能够按需获取下一个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
和一个repl一起玩。
答案 2 :(得分:1)
您可以简单地将列表项映射到template<class T>
void BST<T>::InOrder_(const BNode<T> *const &s)
{
......
}
函数:
sum
它变成:
list(map(sum, cases))
或者如果您要单独打印项目:
[2, 4, 6]
这将输出:
for s in map(sum, cases):
print(s)
答案 3 :(得分:0)
如果您不需要列表中的值,可以按以下步骤进行处理:
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)
答案 4 :(得分:0)
您可以这样做:
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)
但是还有一种更Python化的方式:
def case_cal(cases):
return [(x + y) for (x, y) in cases]
这称为列表理解,您将在python中经常使用它们。您可以阅读有关here的更多信息。
答案 5 :(得分:0)
只需执行以下操作:
def case_calc(cases):
for x, y in cases:
print(x + y)
case_calc([(1, 1), (2, 2), (3, 3)])
欢呼