我知道list()
构造函数会创建一个新列表但它的特征究竟是什么?
致电list((1,2,3,4,[5,6,7,8],9))
时会发生什么?
致电list([[[2,3,4]]])
时会发生什么?
致电list([[1,2,3],[4,5,6]])
时会发生什么?
据我所知,调用构造函数list
会删除最外部的大括号(元组或列表),并用[]
替换它们。这是真的? list()
还有哪些其他细微差别?
答案 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()只是构建列表对象的一种方式,其中列出的方式如下:
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]]