最后一步!(python调优)

2024-10-01 09:18:38 发布

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

我有这个代码:

        emailRows = []
        for rowTuple in listOfRows: #row loop
            emailLine = []
            for tup in rowTuple: #field loop
                emailLine.append(str(tup).center(20))                
            emailRows.append('\t'.join([field.strip().center(20) for field in emailLine]))
        rows = '\n'.join(emailRows)
        emailBody = emailBody + rows

到目前为止我改成了这个代码:

^{pr2}$

我不确定,但似乎我可以摆脱最后一个for循环。不过,我需要一些帮助。在


Tags: 代码inloopfieldforrowscenterjoin
3条回答
'\n'.join(('\t'.join([field.strip().center(20) for
    field in [str(tup).center(20) for
        tup in rowTuple]])) for rowTuple in listOfRows)

哇,这太模糊了。我希望cProfile说这家伙是个大人物。在

我不相信这个结果是值得的,但是如果您打算采用消除所有for循环来支持理解的话,您应该注意可以使用generator expressions而不是列表理解来避免创建(然后丢弃)中间列表。在

您可以使用map()代替for x in seq

rows='\n'.join(map(lambda row: '\t'.join(map(lambda cell: str(cell).center(20), row)), listOfRows))

您也可以尝试reduce(),而不是join()

^{pr2}$

但你的第一个例子看起来更漂亮)

相关问题 更多 >