Python在单词字符串中查找所有两个字母对

时间:2015-11-09 18:11:32

标签: list python-3.x

我们说我有一个单词列表:

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

因此...

for x in word_list:
    #Do something

如何使结果成为每个单词中所有可能的两个字母组合的列表?

  1. 欢迎:WE,EL,LC,CO,OM,ME
  2. TO:TO
  3. 我的:我的
  4. B:
  5. DAY:DA,AY

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

3 个答案:

答案 0 :(得分:0)

由于您可以对字符串进行切片,因此您可以将每个单词滑入for循环中的所有双字符块(i:i:2),然后检查该切片的长度为2(以消除最后的1-char字符串,或者如果单词的长度为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']

答案 1 :(得分: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']

答案 2 :(得分: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)]