【问题标题】:Convert Any Iterable to Array in Python在 Python 中将任何可迭代对象转换为数组
【发布时间】:2011-09-20 19:14:47
【问题描述】:

这只是 是一个骗子,但我只是没有找到这个问题的任何现有实例......

在 Python 中将任何可迭代对象转换为数组的最简单方法是什么(理想情况下,无需导入任何内容)?

注意:理想情况下,如果输入是一个数组,则不应复制它(但这不是必需的)。

【问题讨论】:

  • 什么是数组,请链接到文档?
  • @bradley 哦,别告诉我 Python 没有数组!?!我以为() 是列表,[] 是数组...
  • Python 确实有数组(见我的回答),但它们与列表不同。 () 用于元组。
  • () 是元组 [] 是列表,{} 是字典 :)

标签: python arrays list iterable


【解决方案1】:

这取决于你所说的数组是什么意思。如果您真的是指数组而不是列表等,那么您应该知道数组是相同(基本)类型的元素的容器(请参阅http://docs.python.org/library/array.html),即并非所有可迭代对象都可以转换为数组。如果您的意思是列表,请尝试以下操作:

l = list(iterable)

【讨论】:

    【解决方案2】:

    如果“数组”是指一个列表,那么:

    list(foo)
    

    【讨论】:

      【解决方案3】:

      [e for e in iterable] 呢?

      并且,为了满足额外的要求:

      iterable if isinstance(iterable,list) else [e for e in iterable]

      【讨论】:

      • [e for e in iterable] 最好写成list(iterable)
      【解决方案4】:

      list 函数将一个可迭代对象作为参数并返回一个列表。这是一个例子:

      >>> rng = xrange(10)
      >>> rng
      xrange(10)
      >>> list(rng)
      [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
      

      这也不会创建列表列表:

      >>> list(list(rng))
      [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
      

      【讨论】:

        【解决方案5】:

        基本上,数组和列表在 python 中或多或少是一回事。所以列表推导可以完成这项工作:

          ary = [ i for i in yourthing ]
        

        【讨论】:

          猜你喜欢
          • 2015-02-21
          • 2011-10-03
          • 2020-04-11
          • 2017-12-30
          • 2021-04-21
          • 2012-05-07
          • 1970-01-01
          • 2012-02-12
          • 2018-07-13
          相关资源
          最近更新 更多