Python:(1,2,3)和[1,2,3]之间有什么区别,我什么时候应该使用它们?

Mar*_*son 48 python tuples list

在许多地方,(1,2,3)并且[1,2,3]可以互换使用.

我什么时候应该使用其中一个,为什么?

Joe*_*haw 32

Python常见问题解答:

列表和元组虽然在许多方面类似,但通常以基本不同的方式使用.元组可以被认为类似于Pascal记录或C结构; 它们是相关数据的小集合,可以是作为一组操作的不同类型.例如,笛卡尔坐标适当地表示为两个或三个数字的元组.

另一方面,列表更像是其他语言中的数组.它们倾向于容纳不同数量的物体,所有这些物体具有相同的类型并且一个接一个地操作.

通常按照惯例,您不会仅根据其(im)可变性来选择列表或元组.您可以为完全不同的数据的小集合选择一个元组,其中一个完整的类太重量级,以及一个具有同类数据集的任何合理大小的集合的列表.


spa*_*kes 19

该列表[1,2,3]是动态和灵活的,但灵活性是以速度成本.

元组(1,2,3)是固定的(不可变的)因此更快.

  • 哪些操作更快?索引? (2认同)

HS.*_*HS. 11

元组是一种快速\灵活的方式来创建复合数据类型.列表是对象列表的容器.

例如,您可以使用List来存储班级中学生详细信息的列表.

该列表中的每个学生详细信息可以是包含其卷号,名称和测试分数的3元组.

`[(1,'Mark',86),(2,'John',34)...]`
Run Code Online (Sandbox Code Playgroud)

此外,因为元组是不可变的,所以它们可以用作字典中的键.


小智 7

元组的概念具有高度表达性:

  • 实际上,它们非常适合打包和解包值(x,y=coord).

  • 结合字典(哈希表),它们允许映射形式,否则需要多级关联.例如,考虑标记已找到(x,y).

    // PHP
    if (!isset($found[$x])) {
        $found[$x] = Array();
        $found[$x][$y] = true;
    } else if (!isset($found[$x][$y])) {
        $found[$x][$y] = true;
    }
    
    # Python
    found[(x,y)] = True # parens added for clarity
    
    Run Code Online (Sandbox Code Playgroud)
  • 列表应该与对其内容的操作期望一起使用(因此提及不变性).人们希望用列表弹出,推送,拼接,切片,搜索,插入,插入等.

  • 元组应该是对象的低级表示,其中进行简单的比较,或者诸如以可预测的方式提取第n个元素或n个元素的操作,例如先前给出的坐标示例.

  • 最后,列表不可清除,因此使用字典(Perl中的哈希表,PHP中的关联数组)完成的映射类型必须使用元组完成.

    这是一个简单的元组和字典示例,最后一起:

    """
    couple is a tuple of two people
    doesLike is a dictionary mapping couples to True or False
    """
    couple = "john", "jane"
    doesLike = dict()
    doesLike[couple] = True
    doesLike["jane", "john"] = False # unrequited love :'(
    
    Run Code Online (Sandbox Code Playgroud)


小智 5

[1, 2, 3]是一个可以添加或删除项目的列表。
(1, 2, 3)是一个元组,一旦定义,就无法进行修改。