在Python中展平元组列表

use*_*537 0 python list

我正在使用递归函数来创建通过迷宫的流路径.该函数返回正确的路径元组(row,col),但我需要以元组列表的形式.例如,我需要创建此表单

[(0,0),(1,1),(2,2),(3,3),(4,3)]
Run Code Online (Sandbox Code Playgroud)

但是该函数返回:

[(0, 0), [(1, 1), [(2, 2), [(3, 3), (4, 3)]]]]
Run Code Online (Sandbox Code Playgroud)

这是功能:

def FlowPathAt(fdir,row,col):
    lItem = FlowOut(fdir,row,col)
    if not lItem:
        return (row,col)
    else:
        r,c = lItem
        return [(row,col) ,  FlowPathAt(fdir,r,c)]
Run Code Online (Sandbox Code Playgroud)

FlowOut(fdir,row,col) 是一个函数,它返回从(row,col)开始的下一个单元格地址

有没有办法在构建期间展平此列表?

类似:如何将元组列表展平为pythonic列表

Cai*_*von 6

试试这个:

def FlowPathAt(fdir,row,col):
    lItem = FlowOut(fdir,row,col)
    if not lItem:
        return [(row,col)] # More convenient base case
    else:
        r,c = lItem
        return [(row,col)] + FlowPathAt(fdir,r,c) # Append list to list instead of nesting
Run Code Online (Sandbox Code Playgroud)

(这总是返回一个元组列表,这似乎比有时返回一个列表更好的想法,有时返回一个元组.如果这是不可接受的,你需要做一些后处理.)