元组/列表之间的区别是什么?它们的优点/缺点是什么?
当前回答
只是一个快速扩展列表vs元组响应:
由于动态特性,list分配的位桶比实际需要的内存要多。这样做是为了防止在将来附加额外项时进行昂贵的重新分配操作。 另一方面,由于是静态的,轻量级元组对象不需要保留存储它们所需的额外内存。
其他回答
首先,它们都是Python中的非标量对象(也称为复合对象)。
元组,有序的元素序列(可以包含任何没有混叠问题的对象) 不可变(tuple, int, float, str) 使用+进行连接(当然会创建一个全新的元组) 索引 切片 Singleton(3,) # ->(3)而不是(3)# -> 3 List(其他语言中的数组),值的有序序列 可变的 单例[3] 克隆new_array = origin_array[:] 列表推导式[x**2 for x in range(1,7)]给出 [1,4,9,16,25,36](不可读)
使用list还可能导致别名错误(两条不同的路径 指向同一对象)。
list和tuple的区别
元组和列表在Python中看起来都是相似的序列类型。
Literal syntax We use parenthesis () to construct tuples and square brackets [ ] to get a new list. Also, we can use call of the appropriate type to get required structure — tuple or list. someTuple = (4,6) someList = [2,6] Mutability Tuples are immutable, while lists are mutable. This point is the base the for the following ones. Memory usage Due to mutability, you need more memory for lists and less memory for tuples. Extending You can add a new element to both tuples and lists with the only difference that the id of the tuple will be changed (i.e., we’ll have a new object). Hashing Tuples are hashable and lists are not. It means that you can use a tuple as a key in a dictionary. The list can't be used as a key in a dictionary, whereas a tuple can be used tup = (1,2) list_ = [1,2] c = {tup : 1} # ok c = {list_ : 1} # error Semantics This point is more about best practice. You should use tuples as heterogeneous data structures, while lists are homogenous sequences.
关键的区别是元组是不可变的。这意味着一旦创建了元组,就不能更改其中的值。
因此,如果您需要更改值,请使用List。
元组的好处:
性能略有改善。 元组是不可变的,可以用作字典中的键。 如果你不能改变它,其他人也不能,也就是说你不需要担心任何API函数等改变你的元组没有被要求。
只是一个快速扩展列表vs元组响应:
由于动态特性,list分配的位桶比实际需要的内存要多。这样做是为了防止在将来附加额外项时进行昂贵的重新分配操作。 另一方面,由于是静态的,轻量级元组对象不需要保留存储它们所需的额外内存。
换句话说,TUPLES用于存储一组元素,其中组的内容/成员不会改变,而list用于存储一组元素,其中组的成员可以改变。
例如,如果我想在一个变量中存储我的网络IP,最好使用一个元组,因为IP是固定的。my_ip =('192.168.0.15', 33,60)。但是,如果我想存储一组未来6个月我将访问的地方的IP,那么我应该使用LIST,因为我会不断更新和添加新的IP到组中。像这样
places_to_visit = [
('192.168.0.15', 33, 60),
('192.168.0.22', 34, 60),
('192.168.0.1', 34, 60),
('192.168.0.2', 34, 60),
('192.168.0.8', 34, 60),
('192.168.0.11', 34, 60)
]
推荐文章
- 证书验证失败:无法获得本地颁发者证书
- 当使用pip3安装包时,“Python中的ssl模块不可用”
- 无法切换Python与pyenv
- Python if not == vs if !=
- 如何从scikit-learn决策树中提取决策规则?
- 为什么在Mac OS X v10.9 (Mavericks)的终端中apt-get功能不起作用?
- 将旋转的xtick标签与各自的xtick对齐
- 为什么元组可以包含可变项?
- 如何合并字典的字典?
- 如何创建类属性?
- 不区分大小写的“in”
- 在Python中获取迭代器中的元素个数
- 解析日期字符串并更改格式
- 使用try和。Python中的if
- 如何在Python中获得所有直接子目录