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