| 第一列文本居中 | 第二列文本居右 | 第三列文本居左 |
实际工作中会遇到对新得到的一串数据,需要判断其中是否包含某些数据,并获取相应的输出,或者需要判断数据中是否包含规定顺序的子数据集,以下用两个自定义函数进行判断。
数据示例
value_name | value |
---|---|
scr_list | y,a,b,c,x,d,e,f,g,a,b,d |
pattern | a,b,c,d,e |
accompanying | f,g |
sequence | [a,b,c],[d,e] |
scr_list是待分析列表,若其中包含pattern中的数据,则返回1,若包含accompanying中的数据,则返回2,否则返回0;
还需判断scr_list中是否有满足sequence中顺序要求的数据。
数据匹配
输入示例数据
src_list = ['y','a','b','c','x','d','e','f','g','a','b','d']
pattern = ['a','b','c','d','e']
accompanying = ['f','g']
sequence = [['a,b,c'],['d,e']]
用in判断src_list 中的子数据是否在pattern 和accompanying 中,并输出相应结果。
def pattern_match(src_list,pattern,accompanying):
pattern_value = []
for i in range(len(src_list)):
if src_list[i] in pattern:
pattern_value.append([src_list[i],1])
elif src_list[i] in accompanying:
pattern_value.append([src_list[i],2])
else:
pattern_value.append([src_list[i],0])
return pattern_value
调用函数:
In [1]: pattern_match(src_list,pattern,accompanying)
Out[1]:
[['y', 0],
['a', 1],
['b', 1],
['c', 1],
['x', 0],
['d', 1],
['e', 1],
['f', 2],
['g', 2],
['a', 1],
['b', 1],
['d', 1]]
判断顺序
def pattern_sort(src_list,sequence):
for i in range(len(sequence)):
a = sequence[i][0]
y = 0
for j in range(src_list.count(a)):
list_tmp = src_list[y:]
y = list_tmp.index(a)
if y <= (len(list_tmp) - len(sequence[i])):
if src_list[y:(y+len(sequence[i]))] == sequence[i]:
print('%s在%s中'%(sequence[i],src_list))
elif j == src_list.count(a):
print('顺序未匹配')
else:
pass
else:
pass
y += 1
调用函数:
In [1]: pattern_sort(src_list,sequence)
['a', 'b', 'c'] 在 ['y', 'a', 'b', 'c', 'x', 'd', 'e', 'f', 'g', 'a', 'b', 'd'] 中
['d', 'e'] 在 ['y', 'a', 'b', 'c', 'x', 'd', 'e', 'f', 'g', 'a', 'b', 'd'] 中