在 Python 中将任何可迭代对象转换为数组

Posted

技术标签:

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

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

的最简单方法是什么(理想情况下,无需导入任何内容)?

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

【问题讨论】:

什么是数组,请链接到文档? @bradley 哦,别告诉我 Python 没有数组!?!我以为() 是列表,[] 是数组... Python 确实有数组(见我的回答),但它们与列表不同。 () 用于元组。 () 是元组 [] 是列表, 是字典 :) Fastest way to convert an iterator to a list的可能重复 【参考方案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 ]

【讨论】:

以上是关于在 Python 中将任何可迭代对象转换为数组的主要内容,如果未能解决你的问题,请参考以下文章

Python中迭代器&生成器的“奇技淫巧“

python知识点

在角度/打字稿中将类创建为可迭代

Python迭代器

Python之路

将数组转换为 ES6 可迭代