2011-04-03 109 views
0

3.2如何用函數改變列表中的項目,並在改變之前返回函數的結果和項目本身? 10XPython中的Python列表和迭代器

def some(func,seq): 
    # What to do here? 
+0

你有一個列表。還有一個功能。你想做什麼? – pajton 2011-04-03 18:15:08

回答

3

喜歡的東西

def func(my_func,seq): 
    return seq, [my_func(n) for n in seq] 

def func(my_func,seq): 
    return [(my_func(n),n) for n in seq] 

...您的描述是不是在這方面很清楚。

這裏使用的是列表理解。對seq中的每個元素調用一次my_func,並返回該元素的函數值。

+1

不是'map(lambda x:f(x),seq)'或'map(lambda x:(f(x),x),seq)'好多了? – khachik 2011-04-03 18:20:10

+1

編號列表綜合是做這件事情的首選方式。 – pajton 2011-04-03 18:22:52

+0

@khachik:對於第一種情況,'map(f,seq)'比你的lambda好。但請注意'map'返回一個可迭代的,而不是一個列表。正如pajton提到的,列表理解優於lambda。 – kennytm 2011-04-03 18:29:11