2015-11-09 76 views
0

比方說,我有一個單詞列表:Python中找到一個單詞的所有雙字母串對

word_list = ['WELCOME', 'TO', 'MY', 'B', 'DAY'] 

所以......

for x in word_list: 
    #Do something 

如何讓這個在結果是每個單詞中所有可能的兩個字母組合的列表?

  1. WELCOME:WE,EL,LC,CO,OM,ME
  2. TO:TO
  3. MY:MY
  4. B:
  5. DAY:DA,AY

    list = ['WE', 'EL', 'LC', 'CO', 'OM', 'ME', 'TO', 'MY', 'DA', 'AY'] 
    

回答

0

由於您可以切分字符串,因此可以將每個單詞滑入其所有雙字符塊(i:i:2)的for循環,並且然後檢查切片具有二的長度(在結束擺脫1炭串,或如果字具有爲1的長度):

doublet_list = [] 
for word in word_list: 
    for i,j in enumerate(word): 
     doublet = word[i:i+2] 
     if len(doublet) == 2: 
      doublet_list.append(doublet) 
print doublet_list 
# ['WE', 'EL', 'LC', 'CO', 'OM', 'ME', 'TO', 'MY', 'DA', 'AY'] 
0

您可以使用zip

>>> s='WELCOME' 
>>> list(zip(s, s[1:])) 
[('W', 'E'), ('E', 'L'), ('L', 'C'), ('C', 'O'), ('O', 'M'), ('M', 'E')] 
>>> [''.join(t) for t in zip(s, s[1:])] 
['WE', 'EL', 'LC', 'CO', 'OM', 'ME'] 
>>> word_list = ['WELCOME', 'TO', 'MY', 'B', 'DAY'] 
>>> for word in word_list: 
... print(word, [''.join(t) for t in zip(word, word[1:])]) 
... 
WELCOME ['WE', 'EL', 'LC', 'CO', 'OM', 'ME'] 
TO ['TO'] 
MY ['MY'] 
B [] 
DAY ['DA', 'AY'] 

而要得到您想要的清單:

>>> result=[] 
>>> for word in word_list: 
... result.extend([''.join(t) for t in zip(word, word[1:])]) 
... 
>>> result 
['WE', 'EL', 'LC', 'CO', 'OM', 'ME', 'TO', 'MY', 'DA', 'AY'] 
0

所以,你想,在一次返回連續2個對象的迭代器,和步驟,直到第二個迭代器到達終點。您可以將迭代器iter1設置爲迭代器的開頭,將其克隆到iter2和步驟iter2一次。然後拉鍊。

比方說:

from itertools import tee, izip 
def pairwise(iterable): 
    iter1, iter2 = tee(iterable) 
    next(iter2, None) 
    return izip(*[iter1, iter2]) 

你必須:

word_list = ['WELCOME', 'TO', 'MY', 'B', 'DAY'] 
for word in word_list: 
    print [''.join(t) for t in pairwise(word)] 
相關問題