1. 程式人生 > >把tuple或者list裡的元素作為函式引數傳入

把tuple或者list裡的元素作為函式引數傳入

1、tuple或list中的所有元素傳入一個函式的引數列表中:

需求函式如下:

tuple = (1, "foo", "bar")

def myfun(number, str1, str2):
    return (number * 2, str1 + str2, str2 + str1)

myfun(expand(tuple)) # (2, "foobar", "barfoo")

解決方案:

使用迭代器,就能很好的達到需求:

myfun(*tuple)

 如上所示,list也是同樣道理。

2、tuple或者list的元素依次傳入函式,進行多次迭代。

方法:使用map()函式。map() 會根據提供的函式對指定序列做對映。

第一個引數 function 以引數序列中的每一個元素呼叫 function 函式,返回包含每次 function 函式返回值的新列表。

map() 函式語法:

map(function, iterable, ...)

下面的函示例取自菜鳥教程:

>>>def square(x) :            # 計算平方數
...     return x ** 2
... 
>>> map(square, [1,2,3,4,5])   # 計算列表各個元素的平方
[1, 4, 9, 16, 25]
>>> map(lambda x: x ** 2, [1, 2, 3, 4, 5])  # 使用 lambda 匿名函式
[1, 4, 9, 16, 25]
 
# 提供了兩個列表,對相同位置的列表資料進行相加
>>> map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])
[3, 7, 11, 15, 19]