假设我们有一个由字符{'0','1'}
组成的字母表,希望创建一个长度为n的单词列表,使它们不包含连续两个零。我的实现思路如下:
def words(n):
if n == 0:
return ['']
return [a+b for b in words(n-1) for a in ['0','1'] if a != '0' or b != '0']
< p > < em > words(3) 的输出如下:
['010', '110', '001', '101', '011', '111']
^is the wrong one
你能看出我的错误或者说出我生成器的想法错在哪里吗?
n=2
的递归调用中,您最终得到['01', '11']
。现在对于两个字符串都满足b != '0'
,因此您将在左侧(作为a
)连接0
和1
。 - Tomerikoo