You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 00:06:08