2017-02-03 48 views
0

我有以下的列表,它說我想以某種方式處理,然後打印出的元素: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 
+0

是的,我寫錯了,謝謝指出它 – Har

回答

3

你可以避免使用,而不是一個列表生成器(注意圓括號,而不是方的)在列表中會兩次:

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

隨即,功能分離乾淨,但只有一個穿過該列表會做完了。

+0

如果你有多個函數處理循環,而不僅僅是兩個,這會工作嗎?即increment_list,multiply_list,divide_list,print_list – Har

+1

是的。 [填充] – Amadan

+0

阿馬丹你能擴大你的答案,包括多個階段的處理嗎? – Har