在保存中间值的同时对值进行多重映射

mar*_*eau 6 python dictionary

我想多次通过字典映射一个值,并记录中间值.由于list.append()没有返回值,下面是我能够想出的最好的.有没有更好的方法在Python中执行此操作,可能使用列表推导或递归?

def append(v, seq):
    seq.append(v)
    return v

def multimap(value, f, count):
    result = []
    for _ in range(count):
        value = append(f[value], result)

    return result

print( multimap('a', {'a': 'b', 'b': 'c', 'c': 'd', 'd': 'a'}, 4) )
Run Code Online (Sandbox Code Playgroud)

输出:

['b', 'c', 'd', 'a']
Run Code Online (Sandbox Code Playgroud)

shx*_*hx2 5

您可以简单地使用生成器,而不必处理列表:

def multimap(value, f, count):
    for _ in range(count):
        value = f[value]
        yield value

print(list(multimap('a', {'a': 'b', 'b': 'c', 'c': 'd', 'd': 'a'}, 4)))
Run Code Online (Sandbox Code Playgroud)