[英]Python: if list contains string print all the indexes / elements in the list that contain it
[英]String contains all the elements of a list
我正在轉向Python,而且對pythonic方法仍然相對較新。 我想編寫一個帶字符串和列表的函數,如果列表中的所有元素都出現在字符串中,則返回true。
這似乎很簡單。 但是,我面臨一些困難。 代碼如下:
def myfun(str,list):
for a in list:
if not a in str:
return False
return True
Example : myfun('tomato',['t','o','m','a']) should return true
myfun('potato',['t','o','m','a']) should return false
myfun('tomato',['t','o','m']) should return true
此外,我希望有人可以在這里提出可能的正則表達式方法。 我也在試試他們。
>>> all(x in 'tomato' for x in ['t','o','m','a'])
True
>>> all(x in 'potato' for x in ['t','o','m','a'])
False
def myfun(str,list):
for a in list:
if not a in str:
return False
return True
return true必須在for循環之外,而不是在if語句之后,否則它將在檢查第一個字母后返回true。 這解決了你的代碼的問題:)
如果您不擔心重復字符,那么:
def myfunc(string, seq):
return set(seq).issubset(string)
並且,未經測試,如果你關心重復的字符,那么可能(未經測試):
from collections import Counter
def myfunc(string, seq):
c1 = Counter(string)
c2 = Counter(seq)
return not (c2 - c1)
為了好玩,我想我會用迭代器和地圖來做:
from operator import contains
from itertools import imap, repeat
def myfun(str, list):
return all(imap(contains, repeat(str), list))
然后我意識到這基本上和接受的答案一樣,但可能有更多的方法調用。
def myfun(str, list):
return all(letter in str for letter in list)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.