微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在列表中解压缩迭代器的Python方法

如何解决在列表中解压缩迭代器的Python方法

在探索了更多主题之后,我得出了一些结论。

应该有一种-最好只有一种-显而易见的方法

禅宗的python

确定哪个选项是“ pythonic”选项时,应考虑一些标准:

  • 多么明确
  • 简单,
  • 和可读性。

在所有条件下赢得的明显“ pythonic”选项是选项3):

列表=列表(my_iterator)

这就是为什么“很明显”没有3)是pythonic的原因:

  • 选项3)接近自然语言,使您可以“立即”思考输出内容
  • 选项2)(使用列表理解),如果您是第一次看到该行代码,将使您阅读更多并更加关注。例如,当我想添加一些额外的步骤(使用迭代元素调用函数或使用if语句进行某些检查)时,我使用列表推导,因此当我看到列表推导时,我会检查内部是否存在任何函数调用或任何其他如果陈述。
  • 选项1)(使用*解压缩)如果您不经常使用星号运算符,可能会有些混乱,在Python中4种情况使用星号

    1. 用于乘法和幂运算。
    2. 用于重复扩展列表类型的容器。
    3. 用于使用可变参数。(所谓的“包装”)
    4. 用于打开包装箱。

一个很好的理由是Python文档本身,我也做了一些统计数据来检查哪些选项是由文档选择,为了这个,我我- 我选择了4 BUIL,从模块的迭代器和一切itertools(即使用这样的:itertools.)怎么看它们被包装在一个列表中:

  • 地图
  • 范围
  • 过滤
  • 枚举
  • itertools。

浏览了文档之后,我发现:使用选项1)和2)在列表中解压缩了0个迭代器,使用选项3)解开了35个迭代器。

在此处输入图片说明

在列表中解压缩迭代器的pythonic方法是: my_list = list(my_iterator)

解决方法

我正在尝试找出在列表中解压缩迭代器的pythonic方法。

例如:

my_iterator = zip([1,2,3,4],[1,4])

我提供了以下几种在列表中解压缩迭代器的方法:

1)

my_list = [*my_iterator]

2)

my_list = [e for e in my_iterator]

3)

my_list = list(my_iterator)

No 1)是我最喜欢的方法,因为它减少了代码,但是我想知道这是否也是pythonic方法。或者,也许除了Python
3之外,还有另一种方法可以实现这一目标?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。