Python中的大括号和方括号有什么区别?
在Python中,大括号和方括号有什么区别呢?
A ={1,2}
B =[1,2]
当我在终端打印A
和B
时,它们看起来没有什么区别。这是真的吗?
有时候,我注意到一些代码使用{}
和[]
来初始化不同的变量。
比如说,A=[]
,B={}
这里面有什么区别吗?
3 个回答
这两种大括号的用法是不同的。如果你只是想要一个列表来存放一些元素,并且按照索引号(从0开始)来组织它们,那就用 []
,然后根据需要添加元素。{}
是特别的,你可以给值自定义一个名字,比如 a = {"John": 14}
。这样一来,你就不需要记住每个人的年龄在列表中的位置了,只要用 a["John"]
就能直接找到约翰的年龄。
[]
被称为列表,而 {}
被称为字典(在Python中)。字典基本上是一种更方便的列表形式,让你更轻松地访问数据。
不过,使用字典时有一个小问题。很多时候,你放进字典的数据不会保持原来的顺序。因此,当你一个一个地查看这些值时,它们的顺序可能和你预期的不一样。为了避免这个问题,有一种特殊的字典,你需要添加这一行 from collections import OrderedDict
,并把 {}
替换成 OrderedDict()
。不过,我觉得你现在不需要担心这个。
他们创建了不同类型的东西。
>>> type({})
<type 'dict'>
>>> type([])
<type 'list'>
>>> type({1, 2})
<type 'set'>
>>> type({1: 2})
<type 'dict'>
>>> type([1, 2])
<type 'list'>
这些叫做字面量; 比如一个集合字面量:
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教程中的数据结构章节; 列表在入门章节中介绍。
像这样的容器字面量也叫做显示,这种语法允许通过循环来程序化创建内容,这被称为推导式。