我正在嘗試使用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作爲一個變量,並作爲一個函數在同一時間。
我在哪裏錯了?達到此目的的最佳方法是什麼?
我正在嘗試使用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作爲一個變量,並作爲一個函數在同一時間。
我在哪裏錯了?達到此目的的最佳方法是什麼?
使用in
:
func = lambda elem, cont: elem in cont
li = [1, 2, 3]
print(func(1, li))
>> True
print(func(4, li))
>> False
但這種用法的正常def
語法可用於簡單起見。
謝謝,如果我想要的功能有相同的名稱,因爲我做了什麼? –
在這種情況下,你可以,但我沒有看到你想要的任何理由。 – DeepSpace
來自PEP-8: 「總是使用def語句而不是將lambda表達式直接綁定到標識符的賦值語句。」
爲什麼不使用:
def check(obj, iterable):
return True if obj in iterable else False
?
當你定義一個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")
發佈你的列表或元組數據以及 – Mani
你想創建e函數L引用他自己?或L已經存在,你試圖覆蓋它? – Scantlight
爲什麼不在'mylist'中做'lambda_func = lambda x:x?無論如何,也許你是通過字符串或整數或類似的東西?給你的L和X值。還有@Scantlight說,你正在重新分配L,這似乎是最初的列表。你確定要這麼做嗎? – gplayer