列表中是否有任何等效的'LIKE'
函數(如MySQL中的函數)。例如;列表中的'LIKE'函數
這是我的名單:
abc = ['one', 'two', 'three', 'twenty one']
如果我給這個詞"on"
,它應打印從列表中匹配的單詞(在這種情況下:'one'
,'twenty one'
),如果我給"fo"
,它應該打印False
列表中是否有任何等效的'LIKE'
函數(如MySQL中的函數)。例如;列表中的'LIKE'函數
這是我的名單:
abc = ['one', 'two', 'three', 'twenty one']
如果我給這個詞"on"
,它應打印從列表中匹配的單詞(在這種情況下:'one'
,'twenty one'
),如果我給"fo"
,它應該打印False
您可以使用列表理解:
[m for m in abc if 'on' in m]
這大致翻譯爲「在ABC的每個元素,添加元素的列表,如果該元素包含‘上’子串」
for x in abc:
if "on" in x:
print x
,或作爲功能,
def like(str, search):
res = []
for x in search:
if str in x:
res.append(x)
return res
>>> abc = ['one', 'two', 'three', 'twenty one']
>>> print [word for word in abc if 'on' in word]
['one', 'twenty one']
是將這些list comprehensions
夠用了嗎?
>>> abc = ['one', 'two', 'three', 'twenty one']
>>> [i for i in abc if 'on' in i]
['one', 'twenty one']
>>> [i for i in abc if 'fo' in i]
[]
你可以在一個函數把這個包:
>>> def like(l, word):
... words = [i for i in abc if word in i]
... if words:
... print '\n'.join(words)
... else:
... print False
...
>>> like(abc, 'on')
one
twenty one
>>> like(abc, 'fo')
False
>>>
如果找不到任何內容,這也會返回一個空列表 - 空列表是錯誤的。 – cwallenpoole
@cwallenpoole:停止分裂......其餘的由OP決定...... –
@Blackmoon我覺得空列表評論很重要,因爲它確實解決了一個問題。我沒有試圖分開頭髮。 – cwallenpoole