3 回答

TA貢獻(xiàn)1911條經(jīng)驗(yàn) 獲得超7個贊
您可以在輸入列表上使用迭代器。調(diào)用next以獲取每個值。如果您用盡迭代器而沒有找到所有匹配項,您將得到 aStopIteration然后返回False。
def check(input_, lookup_list):
it = iter(input_)
try:
for i in lookup_list:
# read values from the input list until we find one which
# matches the current value from the lookup list
while next(it) != i:
pass
# we found matches for everything on the lookup list
return True
except StopIteration:
# we tried to go past the end of the input list
return False

TA貢獻(xiàn)1995條經(jīng)驗(yàn) 獲得超2個贊
def check_exists(l, lookup_list):
check = True
for i in lookup_list:
try:
index = l.index(i)
l = l[index+1:]
except ValueError:
check = False
break
return check
check_exists()函數(shù)將接受完整列表和查找列表作為參數(shù),如果序列存在則返回 True,否則返回 false。
這是完整的程序-
def check_exists(l, lookup_list):
check = True
for i in lookup_list:
try:
index = l.index(i)
l = l[index+1:]
except ValueError:
check = False
break
return check
l = [1, 2, 4, 3, 5, 7, 5, 3, 8, 3, 8, 5, 8, 5, 9, 5, 7, 5, 7, 4, 9, 7, 5, 7,
4, 7, 4, 7, 8, 9, 7, 5, 7, 5, 4, 9, 3, 4, 8, 4, 8, 5, 3, 5, 4, 7, 3, 7, 3, 1,
2, 7, 1, 7, 2, 1]
lookup_list = [2,3,4,5,7,8,9,5,4,3,2,1]
print(check_exists(l,lookup_list))

TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超11個贊
最簡單的方法是將第一個列表(不要稱它為!)轉(zhuǎn)換為字符串input
(尖括號將多位數(shù)字“放在一起”):
input_str = "".join("<"+str(i)+">" for i in input_list)
將第二個列表轉(zhuǎn)換為正則表達(dá)式,允許在必需項之間添加可選的附加項:
lookup_str = ".*" + ".+".join("<"+str(i)+">" for i in lookup_list) + ".+"
現(xiàn)在,檢查輸入字符串是否與正則表達(dá)式匹配:
if (re.search(lookup_str, input_str)): # there is a match
添加回答
舉報