说出有一个名为PatternList = ['b', 0, 'e', 0]
的列表。如何检查CompareList = ['r', 't', 'y', 'b', 'i', 'e', 'y', 'b', 't', 'e', 'r', 't', 'b', 'w', 't', 'e']
中包含的模式PatternList
中是否包含>>> import numpy as np
>>> a = np.zeros((6*4+1,), dtype='i1')[1:]
>>> a.dtype = 'f4'
>>> a[:] = np.arange(6, dtype='f4')
>>> i = np.nditer(a, [], [['readwrite', 'updateifcopy', 'aligned']])
>>> print(i.operands[0].flags)
C_CONTIGUOUS : True
F_CONTIGUOUS : True
OWNDATA : True
WRITEABLE : True
ALIGNED : True
UPDATEIFCOPY : True # <--- :-)
,以及多少次?
在这种情况下,结果将是2,因为CompareList = [&#39; r&#39;,&#39; t&#39;,&#39; y&#39;,&#39; b&#39; ,&#39;我&#39;,&#39;&#39; ,y,&#39; b&#39 ; ,t,&#39; ,&#39; r&#39;,&#39; t&#39;,&#39; b&#39; ,&#39; w&#39;,&#39;&#39;&#39; e&#39;]。
注意:PatternList可以被理解为&#39; b&#39;,任何字符,&#39; e&#39;,任何字符。
答案 0 :(得分:2)
你可以用正则表达式做这样的事情:
import re
l = ["b", "0", "e", "0"]
cl = ["r", "t", "y", "b", "i", "e", "y", "b", "t", "e", "r", "t", "b", "w", "t", "e"]
print re.findall(''.join(l).replace('0','.'), ''.join(cl))
print len(re.findall(''.join(l).replace('0','.'), ''.join(cl)))
输出:
['biey', 'bter']
2
点子:
l
中的元素,并将0
替换为.
以匹配cl
中的任何字符。cl
。re.findall(res_of_step1, res_step_2)
答案 1 :(得分:1)
将其转换为正则表达式时,这看起来很简单:
a=['b', 0, 'e', 0]
a1 = ['.' if i==0 else i for i in a]
>>> a1
['b', '.', 'e', '.']
>>> a2 = ''.join(a1)
compareList = ['r', 't', 'y', 'b', 'i', 'e', 'y', 'b', 't', 'e', 'r', 't', 'b', 'w', 't', 'e']
>>> compare_string=''.join(compareList)
>>> len(re.findall(a2, compare_string))
2
答案 2 :(得分:-1)
这是你的想法吗?您可以使用列表推导:
>>> x = [1,2,3]
>>> y = [0,2,5,7,4,3]
>>> [i for i in x if i in y]
[2, 3]
编辑:
>>> len(set([i for i in x if i in y]))
2
>>>