[英]Python 2.7: How to use avoid multiple iterations of a loop
我有以下列表,说我想以某种方式处理然后打印出元素:
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
您可以避免使用生成器而不是列表来浏览列表两次(请注意,圆括号而不是方括号):
def increment_list(l, amount):
return (x + amount for amount in l)
这样一来,功能就完全分开了,但是只完成了一次遍历列表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.