说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
Python 的字面量提供了字符串和数字的基本数据类型的定义,但是为了构建列表、集合或字典,Python 提供了名为“显示”(displays)的特殊句法。
列表、集合与字典的显示可以通过两种形式定义:
容器的字面值内的元素可以使用标识符引用其他对象。
列表包含不同数据类型的项。存储在列表中的值用逗号(,)分隔,并用方括号([])括起来。我们可以在列表中存储不同类型的数据。列表是可变的。
[]
[1]
[1, 2, 3, 4, 5]
[a, b]
['Amit', 'kabir', 'bhaskar', 2]
列表显示会产生一个新的列表对象,其内容通过一系列表达式或一个推导式来指定。
当提供由逗号分隔的一系列表达式时,其元素会从左至右被求值并按此顺序放入列表对象。 当提供一个推导式时,列表会根据推导式所产生的结果元素进行构建。
单星号 * 表示列表拆包。
Set 是无序数据集的集合。它由 {} 括起,每个元素由逗号(,)分隔。通过将以逗号分隔的元素列表包含于花括号之内来创建,例如:
{'jack', 'sjoerd'}
{1}
{1, }
没有空集合字面值表示方法,{} 是空字典,可以使用内置函数 set() 表示。
集合显示是用花括号标明的,与字典显示的区别在于没有冒号分隔的键和值。
集合显示会产生一个新的可变集合对象,其内容通过一系列表达式或一个推导式来指定。 当提供由逗号分隔的一系列表达式时,其元素会从左至右被求值并加入到集合对象。 当提供一个推导式时,集合会根据推导式所产生的结果元素进行构建。
空集合不能用 {} 来构建;该字面值所构建的是一个空字典。
字典将数据存储在键值对中。它由大括号{}括起,键值用冒号(:)连接成对,每对之间用逗号(,)分隔。我们可以在字典中存储不同类型的数据。字典是可变的。
{'a': 'apple', 'b': 'ball', 'c': 'cat'}
{'name': 'amit', 'age': 20, 'ID': 20}
{} # 空字典
如果给出一个由逗号分隔的键/数据对序列,它们会从左至右被求值以定义字典的条目:每个键对象会被用作在字典中存放相应数据的键。 这意味着你可以在键/数据对序列中多次指定相同的键,最终字典的值将由最后一次给出的键决定。
双星号 **
表示 字典拆包(3.5 新版功能,最初由 PEP 448 提出)。 它的操作数必须是一个 mapping。 每个映射项被会加入新的字典。 后续的值会替代先前的键/数据对和先前的字典拆包所设置的值。
字典推导式与列表和集合推导式有所不同,它需要以冒号分隔的两个表达式,后面带上标准的 "for" 和 "if" 子句。 当推导式被执行时,作为结果的键和值元素会按它们的产生顺序被加入新的字典。
对键取值类型的限制已列在之前的 标准类型层级结构 一节中。 (总的说来,键的类型应该为 hashable,这就把所有可变对象都排除在外。) 重复键之间的冲突不会被检测;指定键所保存的最后一个数据 (即在显示中排最右边的文本) 为最终有效数据。
在 3.8 版更改: 在 Python 3.8 之前的字典推导式中,并没有定义好键和值的求值顺序。 在 CPython 中,值会先于键被求值。 根据 PEP 572 的提议,从 3.8 开始,键会先于值被求值。
推导式的结构是一个单独表达式后面加至少一个 for 子句以及零个或更多个 for 或 if 子句。 在这种情况下,新容器的元素产生方式是将每个 for 或 if 子句视为一个代码块,按从左至右的顺序嵌套,然后每次到达最内层代码块时就对表达式进行求值以产生一个元素。
详见 Python推导式 的详细介绍。
更新时间:2023-09-08 21:14:19 标签:python list set dict