循环中使用print和return之间的区别

时间:2015-10-08 14:39:27

标签: python tuples

好的我想要的是删除每个较小元组中的第一个元素,并将它们分成两个新元组:(2,3)和(5,6)。

a = ((1,2,3),(4,5,6))

def remove_1(tup):
    for r in tup:
        r = r[1:]
        return (r) 

def remove_2(tup):
    for r in tup:
        r = r[1:]
        print(r)

>>>remove_1(x)
(2, 3)
>>> remove_2(x)
(2, 3)
(5, 6)

为什么remove_1remove_2会给出不同的结果,remove_2能够处理A中的第二个元组但remove_1不能处理?

如何让remove_1返回两个元组:

(2,3)
(5,6)

2 个答案:

答案 0 :(得分:2)

原因是return导致函数立即返回。循环立即停止,函数中不再运行代码。

另一方面,print语句只是将结果打印到屏幕上。允许循环继续处理所有项目。

在交互式运行时,似乎returnprint是同义词,但它们非常非常不同。你会看到return"打印"只是因为你在交互式环境中运行。

  

如何让remove_1返回两个元组:

一种方法是创建一个变量来保存中间结果,然后在循环结束时返回。请注意,以下代码中return 之外循环。

def remove_1(tup):
    result = []
    for r in tup:
        r = r[1:]
        result.append(r)
    return tuple(result)

答案 1 :(得分:1)

  

我需要更改什么才能让remove_1返回两个元组?

试试这个:

def remove_1(tup):
    result = []
    for r in tup:
        result.append(r[1:])
    return result

如果你想返回一个元组,你可以改为return tuple(result)