4

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

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

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

4

5 回答 5

17

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

l = list(iterable)
于 2011-06-22T22:43:29.377 回答
4

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

list(foo)
于 2011-06-22T22:40:25.077 回答
2

怎么样[e for e in iterable]

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

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

于 2011-06-22T22:39:00.390 回答
2

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]
于 2011-06-22T22:41:00.697 回答
0

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

  ary = [ i for i in yourthing ]
于 2011-06-22T22:44:36.433 回答