Python 什么';一个数字列表和一个只有一个元组的数字列表有什么区别?

Python 什么';一个数字列表和一个只有一个元组的数字列表有什么区别?,python,Python,这张单子有什么区别 [(0.39, 2.78, 7.11)] 还有其他的名单吗 [0.39, 2.78, 7.11] 我已经打印了类型,它们都是python列表中的类型不一致。这意味着在顶层,您只需看到列表,而无需任何限定 第一个是单个元素的列表,一个由3个元素组成的元组,第二个是由3个元素组成的列表,每个元素都是一个浮点。列表是包含其他对象的对象。您使用list[index]访问列表,其中“index”是您要提取的内容在列表中的位置 元组类似于列表,只是它不能更改。访问它们的方法相同:tu

这张单子有什么区别

[(0.39, 2.78, 7.11)]
还有其他的名单吗

[0.39, 2.78, 7.11]

我已经打印了类型,它们都是python列表中的

类型不一致。这意味着在顶层,您只需看到
列表
,而无需任何限定


第一个是单个元素的列表,一个由3个元素组成的元组,第二个是由3个元素组成的列表,每个元素都是一个浮点。

列表是包含其他对象的对象。您使用list[index]访问列表,其中“index”是您要提取的内容在列表中的位置

元组类似于列表,只是它不能更改。访问它们的方法相同:tuple[index]。如果您试图更改元组的内容,您将得到一个错误

列表使用方括号[]定义,元组使用括号()定义

在第一个示例中,您有一个列表,列表中有一个元组。在这个元组中有三个浮点数。如果要从中提取0.39,可以使用listname[0][0]


第二个示例是包含三个浮动的列表。如果要从中提取0.39,可以使用listname[0]。

Python容器的类型不包含关于内容的信息 被控制住了。列表是一个列表,无论它包含元组还是浮点数。同样,一个元组就是一个元组,不管它包含什么
L1
L2
都是
list
的实例,但这并没有告诉我们任何关于这两个列表的内容

L1
是一个包含一个对象的列表,该对象恰好是一个包含三个
float
s的元组

L1 --> <list> 
          |
          + 0 -> <tuple>
                   | 
                   + 0 -> <float: 0.39>
                   |
                   + 1 -> <float: 2.78>
                   |
                   + 2 -> <float: 7.11>
L2 --> <list>
          |
          + 0 -> <float: 0.39>
          |
          + 1 -> <float: 2.78>
          |
          + 2 -> <float: 7.11>

第一个列表是嵌套的元组列表。因此列表中有一个元组。如果您查看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

另一个重要的区别是元组是不可变的,这意味着它即使在列表中也不能更改。可以删除该元组,然后插入另一个元组,但不能更改元组中的特定元素。正如您可能已经知道的那样,普通列表可以更改。元组不可变的相同概念与嵌套元组相同

试着看一下每一个的
类型(lst[0])
。一个是元组列表,一个是浮点列表?我已经将你的问题重命名为一个听起来相当愚蠢的问题,一旦你阅读了文档并理解了python提供的基本数据结构。见@cᴏʟᴅsᴘᴇᴇᴅ 我对那个标题的编辑有复杂的感觉。一方面它肯定更清楚,另一方面它实际上是答案。@miradulo这正是这类问题。我希望我能关闭它,但我看不到一个很好的理由;这个话题很有意思。。。