[由this question啓發]函數樣可變
假設我有兩個列表:
list1 = ['tom', 'mary', 'frank', 'joe', 'john', 'barry']
list2 = [1, 2, 3, 4]
我想每名list1
與list2
一個數量相匹配。由於list2
中有四個數字,因此我想將前四個名稱中的每一個與list2
中的相應數字進行配對,並將隨機數字分配給list1
中的其餘名稱。
我知道我可以使用for循環與enumerate
和random.choice
解決此問題。事實上,我提供了such a solution來解決原始問題。
我想不過要知道,如果有可能做這樣的事情:
for name, number in itertools.izip_longest(list1, list2, fillvalue=MAGIC):
print name, number
本來,我想用這樣的事情的:
MAGIC = random.choice(list1)
但是,執行random.choice(list1)
第一,然後將該答案用作壓縮操作的fillvalue
。這是沒有吸引力的,因爲它不會爲每一對拉值選擇一個新的隨機值。因此很明顯,itertools.izip_longest
要求它的fillvalue
,它本身具有價值,它不稱之爲。事實上,如果我要提供一個函數,它將產生一個由名稱和可調用函數組成的對,這也是不足的。出於這個原因,lambda
函數是不可行的解決方案。
我該如何去創建一個變量來調用某個函數? itertools.izip_longest
如何使用fillvalue
變量?該變量的__repr__
被稱爲?如果是這樣,我可以用__repr__
做一個類,它在裏面調用一個函數嗎?
「如何創建一個在調用某個函數時調用某個函數的變量?」 - 你不會的。你會調用一個函數。 – user2357112
您可以使用屬性來獲得對象屬性所需的內容,並且在Python 3中,您可以使用令人討厭的元類魔術獲得想要的類,但是對於常規變量,您不能這樣做。 – user2357112
@ user2357112:是的,但許多類的實例在「被調用」時顯示它們的__repr__值。因此,如果'__repr__'要調用某個外部函數,那麼突然之間,您將擁有一個變量,該變量包含一個實例,該實例的值由函數確定。否則,我確實很熟悉變量和函數之間的區別。 – inspectorG4dget