这个列表有什么区别
[(0.39, 2.78, 7.11)]
还有这个其他名单?
[0.39, 2.78, 7.11]
我已经打印了字体,两者都是<class 'list'>
Python 容器的类型不包含有关以下内容的信息 被包含。列表就是列表,无论它包含元组还是浮点数。同样,元组就是元组,无论它包含什么。L1
和L2
都是list
的实例,但这并不能告诉我们任何关于这两个列表的内容。
L1
是一个包含一个对象的列表,恰好是一个包含三个float
的元组。
L1 --> <list>
|
+ 0 -> <tuple>
|
+ 0 -> <float: 0.39>
|
+ 1 -> <float: 2.78>
|
+ 2 -> <float: 7.11>
L2
是一个包含三个对象的列表,所有对象都float
s。
L2 --> <list>
|
+ 0 -> <float: 0.39>
|
+ 1 -> <float: 2.78>
|
+ 2 -> <float: 7.11>
在python中,列表在类型上不是同质的。这意味着在顶层,您将在没有任何资格的情况下看到list
。
第一个是单个元素的列表,3 个元素的元组,第二个是 3 个元素的列表,每个元素都是浮点数。
列表是包含其他对象的对象。你访问一个带有list[index]的列表,其中"index"是你正在拉出的东西列表中的位置。
元组就像一个列表,只是它不能更改。你以同样的方式访问它们:tuple[index]。如果您尝试更改元组的内容,则会收到错误。
列表使用方括号 [] 定义,元组使用括号 () 定义。
因此,在第一个示例中,您有一个列表,该列表内是一个元组。该元组内有三个浮点数。如果你想从中提取 0.39,你可以使用 listname[0][0]。
第二个示例是包含三个浮点数的列表。如果你想从中提取 0.39,你可以使用 listname[0]。
第一个列表是嵌套元组列表。所以列表中有一个元组。另一个列表是普通的 Python 列表,如果您查看 Python 数据结构。这种区别至关重要,因为它会影响您与列表的交互方式。我将在下面向您展示一些示例:
normal_list = [0.39, 2.78, 7.11]
tuple_list = [(0.39, 2.78, 7.11)]
for num in tuple_list:
print(num)
for num in normal_list:
print(num)
由于常规列表包含列表中每个元素的索引,因此运行 for 循环将单独打印每个数字,如下所示:
0.39
2.78
7.11
但是,由于另一个列表中有一个嵌套元组,因此 for 循环将仅打印元组:
(0.39, 2.78, 7.11)
如果要单独访问嵌套元组的每个元素,则必须将其存储在不同的变量中并调用所需的索引,然后从元组中打印出所需的特定索引,如下所示:
alter_tuple_list = tuple_list[0]
print(alter_tuple_list[0])
输出如下:
0.39
另一个重要的区别是元组是不可变的,这意味着即使在列表中也无法更改它。您可以删除元组,然后插入另一个元组,但不能更改元组中的特定元素。正如您可能已经知道的那样,可以更改普通列表。元组不可变的相同概念与嵌套元组相同。