Python遍历函数列表中的一对值

时间:2018-08-25 02:26:39

标签: python-3.x

我有一个类似

的列表
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的新手,这里缺少一些简单的东西。我可以得到任何建议吗?预先感谢!

6 个答案:

答案 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)])

欢呼