Python中的大括号和方括号有什么区别?

75 投票
3 回答
128150 浏览
提问于 2025-04-17 22:13

在Python中,大括号和方括号有什么区别呢?

A ={1,2}
B =[1,2]

当我在终端打印AB时,它们看起来没有什么区别。这是真的吗?

有时候,我注意到一些代码使用{}[]来初始化不同的变量。

比如说,A=[]B={}

这里面有什么区别吗?

3 个回答

2

这两种大括号的用法是不同的。如果你只是想要一个列表来存放一些元素,并且按照索引号(从0开始)来组织它们,那就用 [],然后根据需要添加元素。{} 是特别的,你可以给值自定义一个名字,比如 a = {"John": 14}。这样一来,你就不需要记住每个人的年龄在列表中的位置了,只要用 a["John"] 就能直接找到约翰的年龄。

[] 被称为列表,而 {} 被称为字典(在Python中)。字典基本上是一种更方便的列表形式,让你更轻松地访问数据。

不过,使用字典时有一个小问题。很多时候,你放进字典的数据不会保持原来的顺序。因此,当你一个一个地查看这些值时,它们的顺序可能和你预期的不一样。为了避免这个问题,有一种特殊的字典,你需要添加这一行 from collections import OrderedDict,并把 {} 替换成 OrderedDict()。不过,我觉得你现在不需要担心这个。

16

他们创建了不同类型的东西。

>>> type({})
<type 'dict'>
>>> type([])
<type 'list'>
>>> type({1, 2})
<type 'set'>
>>> type({1: 2})
<type 'dict'>
>>> type([1, 2])
<type 'list'>
108

花括号用来创建字典集合。方括号用来创建列表

这些叫做字面量; 比如一个集合字面量:

aset = {'foo', 'bar'}

或者一个字典字面量:

adict = {'foo': 42, 'bar': 81}
empty_dict = {}

或者一个列表字面量:

alist = ['foo', 'bar', 'bar']
empty_list = []

要创建一个空集合,你只能使用set()

集合是由唯一元素组成的集合,不能对它们进行排序。列表是有序的元素序列,里面的值可以重复。字典则是将键映射到值,键必须是唯一的。集合和字典的键还必须满足其他一些限制,这样Python才能有效地跟踪它们,并确保它们是唯一的。

还有一种叫做tuple类型,用逗号分隔一个或多个元素,括号在很多情况下是可选的:

atuple = ('foo', 'bar')
another_tuple = 'spam',
empty_tuple = ()
WARNING_not_a_tuple = ('eggs')

注意在another_tuple定义中的逗号;正是这个逗号让它成为一个tuple,而不是括号。WARNING_not_a_tuple不是一个元组,因为它没有逗号。如果没有括号,剩下的就是一个字符串。

想了解更多细节,可以查看Python教程中的数据结构章节; 列表在入门章节中介绍。

像这样的容器字面量也叫做显示,这种语法允许通过循环来程序化创建内容,这被称为推导式

撰写回答