Python中的list()函数有什么作用?

6 投票
6 回答
21382 浏览
提问于 2025-04-29 20:29

我知道 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]]) 的时候,会发生什么呢?

根据我的理解,调用 list 这个构造函数会把最外层的括号(无论是元组还是列表)去掉,然后用 [] 替换掉。这个说法对吗?还有其他需要注意的地方吗?

暂无标签

6 个回答

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

print "List elements : ", aList

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

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

这是一种在Python中创建列表的另一种方法。真方便!

1

你说:“根据我的理解,调用构造函数 list 会去掉最外面的括号(元组或列表),并用 [] 替换它们。这是真的吗?”

在我看来,这种理解 并不是一个好的方式来思考 list() 的作用。确实,方括号 [] 用来表示一个列表的字面量,而且在你让列表以字符串形式展示时也会用到,但这只是表示方式。更好的理解是,把 Python 列表看作一种特定的容器对象,它有一些特性,比如它是有序的、可以通过索引访问的、可以迭代的、可变的等等。

list() 构造函数理解为它对你传入的元组的括号进行了一种转换,就像说把 3 加到 6 上会把 6 翻转过来变成 9。这确实是因为‘9’的形状看起来像是把‘6’翻转过来的样子,但这和算术运算的本质没有 任何关系,而且在不同的字体中也不一定成立。

1

是的,这是真的。

其实很简单。list()这个函数可以接收一个可迭代的对象作为输入,然后把它里面的元素放到一个新创建的列表里。这个元素可以是任何东西,甚至可以是另一个列表或者其他可迭代的对象,它们会原封不动地被添加到新列表中。

也就是说,不会进行嵌套处理。

3

Python有一套很完善的文档,涵盖了每个版本的内容,你可以在https://docs.python.org/上查看。关于list()这个函数的文档说明,它只是用来创建一个列表对象,具体的创建方式有以下几种:

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

list()这个函数可以接收任何可迭代的对象作为参数,返回的结果是一个列表对象。

想了解更多,可以查看:https://docs.python.org/3.4/library/stdtypes.html#typesseq-list

10

list() 是一个函数,它可以把你传给它的可迭代对象(比如说一个列表、元组等)转换成一个列表。如果你传进去的东西本身已经是一个列表,那么它会返回一个浅拷贝,也就是说,最外层的容器是新的,但里面的内容还是原来的那些。

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

撰写回答