Python中定义变量时使用方括号[]和花括号{}的区别是什么?
Python两种字面量写法的区别
你给出的两段代码分别对应Python两种完全不同的内置数据结构:
CurlyBraces = {'Lorem','Ipsum'}定义的是集合(set),无键值对的{}是Python集合的字面量写法SquareBrackets = ['Lorem','Ipsum']定义的是列表(list),[]是Python列表的字面量写法
二者的核心差异如下:
1. 有序性不同
列表是有序序列,元素的存储顺序和写入顺序完全一致,支持通过下标索引访问对应位置的元素,比如SquareBrackets[0]可以直接拿到第一个元素Lorem。
集合是无序结构,元素的内部存储顺序和写入顺序没有对应关系,也不支持下标索引访问,直接执行CurlyBraces[0]会抛出TypeError报错。
2. 元素唯一性规则不同
列表允许存储重复元素,写入多少个重复值都会完整保留,比如['Lorem','Ipsum','Lorem']最终会存储3个元素。
集合自带去重特性,所有重复元素会被自动剔除,比如{'Lorem','Ipsum','Lorem'}最终只会保留2个不重复的元素。
3. 适用场景和性能不同
集合底层基于哈希表实现,判断某个元素是否存在的时间复杂度为O(1),还原生支持交集、并集、差集等集合运算,适合做去重、存在性校验、多集合数据比对的场景。
列表按下标访问元素的效率极高,但判断元素存在需要遍历所有元素,时间复杂度为O(n),更适合按顺序存储数据、需要频繁按位置读取元素的场景。
4. 可存储元素的限制不同
集合只能存储可哈希类型的元素(比如数字、字符串、元组),不能存储列表、字典这类不可哈希的可变类型。
列表没有该限制,支持存储任意Python数据类型,也支持嵌套存储其他列表、字典等结构。
# 特性验证示例 # 列表测试 test_list = ['Lorem','Ipsum','Lorem'] print(test_list) # 输出:['Lorem', 'Ipsum', 'Lorem'] print(test_list[0]) # 输出:Lorem # 集合测试 test_set = {'Lorem','Ipsum','Lorem'} print(test_set) # 输出:{'Ipsum', 'Lorem'}(顺序可能变化) # print(test_set[0]) # 取消注释会报错:TypeError: 'set' object is not subscriptable
内容的提问来源于stack exchange,提问作者Beedful
相关产品推荐
相关产品推荐

