5 回答

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超2個(gè)贊
在 python 中有一個(gè)叫做list comprehension的東西,它比長循環(huán)結(jié)構(gòu)更有效且更容易閱讀for。要?jiǎng)?chuàng)建您要查找的列表,這是列表理解的示例:
result = [s for s in strings if all(sf in s for sf in searching_for)]
# ['how are you doing?', 'are you doing well?']
它按照它所說的那樣做,在我看來是直截了當(dāng)?shù)模?/p>
創(chuàng)建一個(gè)列表(括號)
s變量中的字符串strings
如果可以找到sf變量的所有字符串searching_fors

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊
all(or any) 將嘗試遍歷它的輸入;and Trueor False(作為 的結(jié)果j in i)不是可迭代的。這是導(dǎo)致TypeError:
all(True)
# TypeError: 'bool' object is not iterable
相反,讓你的內(nèi)循環(huán)更簡單:
def search(*args):
arg_list = []
search_for = numpy.append(arg_list, args)
for i in strings:
if all(j in i for j in search_for):
print(i)
或者更簡單:
def search(args):
for i in strings:
if all(j in i for j in args):
print(i)
輸出:
search(searching_for)
# how are you doing?
# are you doing well?
請注意,您不需要all(...) is Truesince allwould already have returned either TrueorFalse

TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超7個(gè)贊
strings = ['hello everyone!', 'how are you doing?', 'are you doing well?', 'are you okay?', 'good, me too.']
keywords = ['are', 'you', 'doing']
for s in strings:
for word in s.split():
if word in keywords:
print(s)
break

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超7個(gè)贊
嘗試這個(gè):
for st in strings:
if set(searching_for).issubset(set(st[:-1].split())):
print(st)

TA貢獻(xiàn)1783條經(jīng)驗(yàn) 獲得超4個(gè)贊
你可以試試
print([i for i in strings if all([s in i for s in searching_for])])
輸出
['how are you doing?', 'are you doing well?']
此列表理解將檢查searching_for
列表中的所有單詞是否在每個(gè)句子中strings
,如果是,它將打印該句子。
添加回答
舉報(bào)