我们说我有一个单词列表:
word_list = ['WELCOME', 'TO', 'MY', 'B', 'DAY']
因此...
for x in word_list:
#Do something
如何使结果成为每个单词中所有可能的两个字母组合的列表?
DAY:DA,AY
list = ['WE', 'EL', 'LC', 'CO', 'OM', 'ME', 'TO', 'MY', 'DA', 'AY']
答案 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)]