我有一些以下形式的数据:
segs = [ '0000','0001','0002','0010','0011','0012','0100',..... '2222']
我知道一些数字,例如' 1 ...'或者' ..'或' .1.0'等,其中dot表示要填充的未知数字。如何写一个函数F(segs,digit1,digit2,digit3,digit4),它可以返回给定数字的所有匹配字符串?如果任何数字未知,我可以改为使用空字符串(或点),所以:
F(segs,'','','','') should return full list
F(segs,1,0,0,2) should return one-element list only
F(segs,1,2,2,'') should return only ['1220','1221','1222']
以segs收集的字符串代表了一些形状和它们的方向,我希望具有相当快速的功能,因为它将在游戏中使用。此函数将经常调用,但不会超过一秒钟。
答案 0 :(得分:3)
可以在没有可能更快的正则表达式的情况下完成。它也适用于任意数量的参数,但只检查参数的数量或检查字符串的长度,以最短者为准(如果要更改它,请修改zip
部分):
def f(segs, *pattern):
for seg in segs:
if all(str(p) == s or p == '' for s, p in zip(seg, pattern)):
yield seg