列表构造函数:在以下代码中它如何真正起作用?

时间:2019-01-09 05:46:23

标签: python data-structures

thislist = list(("apple", "banana", "cherry"))
thislist = ["apple", "banana", "cherry"]

关于

  • 列表类别
  • 列出对象
  • 列表构造器

我想了解上面的代码如何完全起作用并创建列表。

3 个答案:

答案 0 :(得分:1)

list是Python中的内置类。构造列表的三种主要方法。

第一种方法是通过通常使用list.__call__来调用“构造函数”或list(...)。构造函数接受任何可迭代的并初始化一个引用其所有元素的列表。在第一个示例中,您传入了字符串tuple的{​​{1}}。分配的结果是将一个新的列表对象绑定到名称("apple", "banana", "cherry")

第二种方法是将逗号分隔的集合括在方括号中。 thislist的结果是,一个新列表对象等于第一个示例中的列表对象,并绑定到名称thislist = ["apple", "banana", "cherry"]上。之所以可以使用这种表示法,是因为thislist类型对于Python语言是不可或缺的,以至于解释器可以识别这种语法。类似的基本数据结构类型的其他示例是list(由set初始化),{'a', 'b', 'c'}(由dict初始化)和{'a': 1, 'b': 2, 'c': 3}(由{{1初始化) }}。

构造列表的第三种方法是通过理解。它是前两种方式的混合,因为它允许您在方括号内使用可迭代的序列,而不是原义序列。列表理解的示例如下:

tuple

通常,理解是通过构造一个空列表并将生成器表达式的元素添加到方括号中来进行的。大致相当于

('a', 'b', 'c')

答案 1 :(得分:0)

List是内置的python迭代器:

这将启动一个新的空列表:

  

this_list = list()-> this_list现在是列表对象

这将创建一个从iterable的项目初始化的新列表

  

this_list = list(iterable)->列表'this_list'正在使用列表构造函数进行构建

例如:

  

this_tuple =(“苹果”,“香蕉”,“樱桃”)

要将此元组转换为列表,将使用:

>>> this_list = list(this_tuple)

>>> this_list

["apple", "banana", "cherry"]

答案 2 :(得分:0)

  

listtuple都内置在python类中。

让我们首先谈谈Lists

列表是序列,用于存储同类项目的集合。

列表构造函数是:

list([iterable])

您可以通过多种方式构造列表:

  • 带有一对方括号,表示空列表。例如:[]
  • 带有方括号,且项目之间用逗号分隔。例如:[a, b, c]
  • 借助列表理解。例如:[x for x in iterable]
  • 借助类型构造函数。例如:list()list(iterable)
  

构造器 list(iterable)构建了一个列表,其内容与可迭代的内容相同且顺序相同。

在这里,iterable可以是支持迭代的序列或对象,也可以是迭代器对象。

如果iterable已经是列表:返回列表的副本

例如:

>>> list('abc') 
['a', 'b', 'c'] 
>>> list( (1, 2, 3) ) # Next let's understand what a tuple is
[1, 2, 3]

现在让我们谈谈Tuples

组是用于存储异构数据集合的序列。

元组构造函数为:

tuple([iterable])

您可以通过多种方式创建元组:

  • 用一对括号表示空元组。例如:()
  • 许多项目之间用逗号分隔。例如:(a, b, c)
  • 对于单例元组,以逗号结尾。例如:a,(a,)
  • 借助tuple()构造函数。例如:tuple()tuple(iterable)

tuple(iterable)构造函数以相同的项目和与可迭代的项目相同的顺序构建元组。 iterable可以是序列或迭代器对象。

如果iterable已经是一个元组,则将返回其副本。 例如:

>>> tuple('abc') 
('a', 'b', 'c') 
>>> tuple( [1, 2, 3] ) 
(1, 2, 3)
>>> tuple
()
>>> t = 1,2,3
>>> t
(1, 2, 3)
  

请注意,实际上是组成元组的逗号,而不是括号。括号是可选的,除了在空元组的情况下,或者在需要使用括号来避免句法歧义的情况下。

以您的问题为例:

  

您想给一个元组创建一个列表。因此,要确定列表构造函数的输入是元组,需要将其括在括号中。

thislist = list(("apple", "banana", "cherry"))

此处("apple", "banana", "cherry")将隐式创建一个元组。然后,该元组("apple", "banana", "cherry")iterable构造函数的list输入,并返回一个列表对象。

>>> type(("apple", "banana", "cherry"))
<class 'tuple'>

提供["apple", "banana", "cherry"]时,将隐式创建list对象并返回。

>>> type(["apple", "banana", "cherry"])
<class 'list'>