我有以下列表,说我想以某种方式处理,然后打印出元素:
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
答案 0 :(得分:3)
您可以使用生成器而不是列表来避免遍历列表两次(请注意圆括号而不是方括号):
def increment_list(l, amount):
return (x + amount for amount in l)
通过这种方式,功能完全分离,但只完成一次通过列表。