2016-04-28 25 views
-1

我正在嘗試使用lambda編寫函數,並將它分配給變量L例如。如果傳遞的參數x被包含在該組L它應該返回true如何使用Lambda返回true的函數L如果x在集合中L

L = {(1,2,3),(4,5,6)}#示例 X =(2,3,5) #example

L = lambda x : list.__contains__(L, x) 

似乎不起作用。 這個想法是我想用L作爲一個變量,並作爲一個函數在同一時間。

我在哪裏錯了?達到此目的的最佳方法是什麼?

+1

發佈你的列表或元組數據以及 – Mani

+0

你想創建e函數L引用他自己?或L已經存在,你試圖覆蓋它? – Scantlight

+0

爲什麼不在'mylist'中做'lambda_func = lambda x:x?無論如何,也許你是通過字符串或整數或類似的東西?給你的L和X值。還有@Scantlight說,你正在重新分配L,這似乎是最初的列表。你確定要這麼做嗎? – gplayer

回答

0

使用in

func = lambda elem, cont: elem in cont 

li = [1, 2, 3] 
print(func(1, li)) 
>> True 
print(func(4, li)) 
>> False 

但這種用法的正常def語法可用於簡單起見。

+0

謝謝,如果我想要的功能有相同的名稱,因爲我做了什麼? –

+0

在這種情況下,你可以,但我沒有看到你想要的任何理由。 – DeepSpace

0

來自PEP-8: 「總是使用def語句而不是將lambda表達式直接綁定到標識符的賦值語句。」

爲什麼不使用:

def check(obj, iterable): 
    return True if obj in iterable else False 

0

當你定義一個lambda功能,它會分配給L變量而不被執行,所以L原始內容將使用它之前丟失,將把一個function而不是一個set

如果你會嘗試:

L = { (1, 2, 3), (4, 5, 6)} 
L = lambda x: x in L 
L((1, 2, 3)) 

,你會得到一個錯誤:

TypeError: argument of type 'function' is not iterable 

正如你所看到的,目前使用L時,這將是type function而不是set了。所以這是一個錯誤的方法,除非你正在考慮使用更多的上下文。

要做到這一點,你應該有一個變量鏈接到你的數據集和另一個爲你的函數(lambda)。

L = {(1, 2, 3), (4, 5, 6)} 
F = lambda x: x in L 
if F((1, 2, 3)): 
    print("was found in L") 
相關問題