理解并简化这一行

Sou*_*Paw 0 python string alphabet

我发现这个例子用于查找给定长度的字母表的所有字符串.

for i in range(length):
    result = [str(x)+str(y) for x in alphabet for y in result or ['']]
Run Code Online (Sandbox Code Playgroud)

我试图理解它是如何工作的,如果这是用for循环实现的,它看起来如何 - 我所有的简化它的尝试都变得非常混乱并且无限循环崩溃......而这一次每次都有效.


例:

def allstrings(alphabet, length):
    """Find the list of all strings of 'alphabet' of length 'length'"""

    alphabet = list(alphabet)

    result = []

    for i in range(length):
        result = [str(x)+str(y) for x in alphabet for y in result or ['']]

    return result

# will return ['aa', 'ab', 'ba', 'bb']
print(allstrings({'a', 'b'}, 2)))

# will return ['000', '001', '010', '011', '100', '101', '110', '111']
print(allstrings({'0', '1'}, 4)))
Run Code Online (Sandbox Code Playgroud)

代码修改自:http://code.activestate.com/recipes/425303-generating-all-strings-of-some-length-of-a-given-a/

Jor*_*ley 5

>>> alphabet="abcd"
>>> list(itertools.permutations(alphabet,3))
Run Code Online (Sandbox Code Playgroud)

应该注意找到字母表的所有排列(字长3)