在Python中将任何Iterable转换为数组

时间:2011-06-22 22:38:02

标签: python arrays list iterable

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

在Python中将任何iterable转换为数组的最简单方法是什么(理想情况下,不导入任何内容)?

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

5 个答案:

答案 0 :(得分:12)

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

l = list(iterable)

答案 1 :(得分:4)

如果用“数组”表示列表,那么:

list(foo)

答案 2 :(得分:2)

[e for e in iterable]怎么样?

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

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

答案 3 :(得分:2)

list函数将iterable作为参数并返回一个列表。这是一个例子:

>>> 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]

答案 4 :(得分:0)

基本上,数组和列表在python中或多或少是相同的。因此,列表理解将完成这项工作:

  ary = [ i for i in yourthing ]