当前位置: 首页 > 编程笔记 >

Python重构列表构建代码

羊城
2023-03-14
本文向大家介绍Python重构列表构建代码,包括了Python重构列表构建代码的使用技巧和注意事项,需要的朋友参考一下

示例

假设您具有复杂的代码,该代码通过从空白列表开始并重复添加到列表中来创建并返回列表:

def create():
    result = []
    # 逻辑在这里...
    result.append(value) # 可能在几个地方
    # 更多逻辑...
    return result # 可能在几个地方

values = create()

当用列表推导替换内部逻辑不可行时,可以将整个函数转换为就地生成器,然后收集结果:

def create_gen():
    # 逻辑...
    yield value
    # 更多逻辑
    return # 当然,如果在函数末尾不需要

values = list(create_gen())

如果逻辑是递归的,则用于yield from将来自递归调用的所有值包括在“扁平化”结果中:

def preorder_traversal(node):
    yield node.value
    for child in node.children:
        yield from preorder_traversal(child)
           

 类似资料:
  • Your browser does not support the video tag.

  • 问题内容: 这很有趣; 强制迭代器获取实际列表的速度比(理解)快得多。 这是真实的还是我的测试太简单了?下面是代码: 问题答案: 列表推导以Python字节码执行循环,就像常规循环一样。 该调用完全在C代码中进行迭代,这要快得多。 列表理解的字节码如下所示: 该指针大致给你执行循环的界限,让你有百万,和步骤在Python字节码估价循环执行。 另一方面,仅使用C API进行对象迭代即可直接从Iter

  • 主要内容:Eclipse 代码重构Eclipse 代码重构 重命名在整个项目中广泛使用的类可能需要很多时间,但 Eclipse 重构向导通过自动检测对被重命名的类的所有依赖项并对其进行修改,使工作变得更容易。 重构菜单可以通过以下方式打开 : 在 Package Explorer 视图中右键单击 Java 元素并选择 Refactor 菜单项。 在 Java 编辑器中右键单击 Java 元素并选择 Refactor 菜单项。 在包

  • 14. 构建代码 Spring Boot并不要求任何特殊的代码布局,然而,存在一些有用的最佳实践。 14.1 使用“default”包 如果一个类没有声明包,则认为这个类位于“默认包”中。通常不鼓励使用“默认包”,应当避免使用它。对于使用了@ComponentScan、@EntityScan或@SpringBootApplication注解的Spring Boot程序,“默认包”可能会导致特殊问题

  • 问题内容: 我正在尝试使用Python将JSON文本转换为标准数据表,但是对此我缺乏经验,当我在线搜索解决方案时,发现我很难实现任何解决方案。 我正在尝试使用,但一直收到我无法解决的错误。 引发ValueError(’格式错误的节点或字符串:’+ repr(node)) JSON: 所需的表格格式(已调整值以适合显示目的): 任何直接的帮助,或只是很好的资源来学习这一点,将不胜感激。我很难找到可以

  • 我想安装Python 3.4.6,但它只有源代码格式。 Python官方网站上的安装选项是Gzip'd源tarball和XZ压缩源tarball。我以前从未以这种方式安装过Python,所以我不知道该怎么办。我如何安装Python和我下载什么文件? https://www.python.org/downloads/release/python-346/