Python 2.7:如何使用避免循环的多次迭代

时间:2017-02-03 09:14:58

标签: python python-2.7

我有以下列表,说我想以某种方式处理,然后打印出元素:

mylist = [1,2,3,4,5,6]
def increment_list(l, amount):
    return [x + amount for x in l]

def print_incremented_list(l):
    for item in l:
        print(item)

l = increment_list(mylist, 1)
print_incremented_list(l)

另一种写这个的方法是

print_incremented_list(increment_list(mylist, 1))

我对上面的问题是函数调用彼此嵌套,这增加了一些复杂性。我发现当它们被放在不同的行时更容易阅读,但这可能是我的偏好。

主要问题是两种方法都不得不经历两次列表,有没有办法避免这种情况而不必将所有功能嵌套在单个函数中,如

def increment_list(l, amount):
    incremented_list = []
    for a in l:
        incremented_list.append(a+amount)
        print(a+amount)
    return incremented_list

1 个答案:

答案 0 :(得分:3)

您可以使用生成器而不是列表来避免遍历列表两次(请注意圆括号而不是方括号):

def increment_list(l, amount):
    return (x + amount for amount in l)

通过这种方式,功能完全分离,但只完成一次通过列表。