Example_List=[112,34533344,11234543,98]
在上面的列表中,我们可以看到112
是11234543
的前置号码。我怎样才能检查这在python中?我认为re.match
或re.search
是解决方案之一?来自大量电话号码的电话号码是另一个电话号码的前置号码?
Example_List=[112,34533344,11234543,98]
在上面的列表中,我们可以看到112
是11234543
的前置号码。我怎样才能检查这在python中?我认为re.match
或re.search
是解决方案之一?来自大量电话号码的电话号码是另一个电话号码的前置号码?
您可以将您的数字转换为字符串,然后对它们进行排序。 之后,如果一个号码是前置号码,所有以此号码开头的号码将会跟随,并且一旦号码不再以此号码开始,您会找到所有号码。
Example_List=[112,34533344,11234543,98]
list_s = sorted(str(i) for i in Example_List)
result = []
for i in range(len(list_s)):
k=i+1
while k<len(list_s) and list_s[k].startswith(list_s[i]):
result.append((list_s[i],list_s[k]))
k += 1
print(result)
我认为应该有一些机制来通过堆栈溢出来感谢你。非常感谢所有人。 – 2015-03-03 12:34:56
我很乐意提供帮助,接受答案通常就足够了。 ;) 这也会向其他人表明问题已解决。 – swenzel 2015-03-03 15:35:46
如果你想找到的所有号码,以任何数量从你的列表,你可以做这样的事情:
#Converte your list of ints to list of strings
tmp = map(lambda x : str(x),l)
#Use a set so you duplicate entries are eliminated
result = set()
for x in tmp:
#Insert all numbers starting with the current one
result.update([y for y in filter(lambda z : z.startswith(x) and z != x, l)])
#Convert your set of ints to a list of strings
result = list(map(int, result))
单列表解析会在你的列表中返回的所有数字(如整数),它与指定的“预号”开始:
In [1]: Example_List=[112,34533344,11234543,98]
In [2]: [num for num in Example_List if str(num).startswith('112')]
Out[2]: [112, 11234543]
如果您预先数量始终在您的列表中的第一项,但可能是不同的名单不同,那么你仍然可以做到在一个林e,但它稍长一点:
In [3]: [num for num in Example_List[1:] if str(num).startswith(str(Example_List[0]))]
Out[3]: [11234543]
为什么不'11234543'.startswith('112')'? – 2015-03-02 09:46:36
你想要什么输出? – 2015-03-02 09:53:30
雅致谢,但这个列表是一个动态列表,意味着用户可以输入大量的电话号码,并将创建一个列表,如下所示:当我们运行该程序时,它询问电话号码num1,num2,num3,...并导致列表将是[112,11234,766566],它是一个整数列表而不是字符串之一。 – 2015-03-02 10:05:52