在Python中展开元组列表

2024-10-01 11:19:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用递归函数创建一个通过迷宫的流动路径。该函数返回正确的路径元组(row,col),但我需要以元组列表的形式提供它。例如,我需要创建这个表单

[(0,0),(1,1),(2,2),(3,3),(4,3)]

但是函数返回:

^{pr2}$

函数如下:

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)]

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

在构建过程中有什么方法可以使这个列表变平吗?在

相似:How to flatten a list of tuples into a pythonic list


Tags: 函数路径表单列表returncol形式list
2条回答

试试这个:

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

(这也总是返回一个元组的列表,这似乎比有时返回一个列表有时返回一个元组更好。如果不能接受,则需要进行一些后处理。)

对于列表增长,这需要大量内存管理,为什么不将其重构为生成器函数:

def FlowPathAt(fdir, row, col):
    while True:
        yield row, col
        lItem = FlowOut(fdir, row, col)
        if lItem is None: break
        row, col = lItem

相关问题 更多 >