list()函数在Python中做了什么?

时间:2014-10-27 04:57:46

标签: python list python-3.x

我知道list()构造函数会创建一个新列表但它的特征究竟是什么?

  1. 致电list((1,2,3,4,[5,6,7,8],9))时会发生什么?

  2. 致电list([[[2,3,4]]])时会发生什么?

  3. 致电list([[1,2,3],[4,5,6]])时会发生什么?

  4. 据我所知,调用构造函数list会删除最外部的大括号(元组或列表),并用[]替换它们。这是真的? list()还有哪些其他细微差别?

6 个答案:

答案 0 :(得分:7)

list()将传递给它的iterable转换为列表。如果itertable已经是一个列表,则返回浅拷贝,即只有最外面的容器是新的其余对象仍然是相同的。

>>> t = (1,2,3,4,[5,6,7,8],9)
>>> lst = list(t) 
>>> lst[4] is t[4]  #outermost container is now a list() but inner items are still same.
True

>>> lst1 = [[[2,3,4]]]
>>> id(lst1)
140270501696936
>>> lst2 = list(lst1)
>>> id(lst2)
140270478302096
>>> lst1[0] is lst2[0]
True

答案 1 :(得分:3)

Python为每个发行版提供了完善的文档集,可在https://docs.python.org/处阅读。 list()的文档声明list()只是构建列表对象的一种方式,其中列出的方式如下:

  • 使用一对方括号表示空列表:[]
  • 使用方括号,用逗号分隔项目:[a],[a,b,c]
  • 使用列表推导:[x for x in iterable]
  • 使用类型构造函数:list()或list(iterable)

list()函数接受任何iterable作为其参数,返回值是列表对象。

进一步阅读:https://docs.python.org/3.4/library/stdtypes.html#typesseq-list

答案 2 :(得分:1)

是的,这是真的。

非常简单。 list()将可迭代对象作为输入,并将其元素添加到新创建的列表中。元素可以是任何东西。它也可以是另一个列表或可迭代对象,它将按原样添加到新列表中。

即不会发生嵌套处理。

答案 3 :(得分:1)

你说:"从我所知道的,调用构造函数列表会删除最外部的大括号(元组或列表)并用[]替换它们。这是真的吗?"

恕我直言,这是不是考虑list()做什么的好方法。是的,方括号[]用于编写列表文字,并在您告诉列表将自己表示为字符串时使用,但最终,这只是表示法。将Python列表视为具有某些属性的特定类型的容器对象,例如它的有序,可索引,可迭代,可变等等,这样做会更好。

考虑list()构造函数对它传递的元组括号类型进行转换,有点像说添加3到6转6颠倒来制作9。 #39;确实是' 9'字形看起来像一个' 6'字形颠倒过来,但是在算术级别上发生了什么没有,而且所有字体都不是这样。

答案 4 :(得分:1)

aTuple = (123, 'xyz', 'zara', 'abc');
aList = list(aTuple)

print "List elements : ", aList

当我们运行以上程序时,它会产生以下结果:

List elements :  [123, 'xyz', 'zara', 'abc']

这是在python中创建列表的另一种方法。多么方便!

答案 5 :(得分:0)

你的问题很模糊,但这是输出如下,它没有"替换"在外括号中,它创建一个列表的数据结构,可以包含列出的"列出的任何值。顺序(一个接一个,接着另一个,等等......)以递归方式,你可以使用append和pop添加/删除元素到指定的索引。另一方面,元组是静态的,不是动态链接的,它们更像是任何类型元素的数组。

当:

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

返回值:

[1, 2, 3, 4, [5, 6, 7, 8], 9]

当:

list([[[2,3,4]]])

返回值:

[[[2, 3, 4]]]

当:

list([[1,2,3],[4,5,6]])

返回值:

[[1, 2, 3], [4, 5, 6]]