持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第5天,点击查看活动详情
字符串、元组、范围和列表
我们已经研究了四种可迭代序列类型:str、元组、范围和列表。它们的相似之处在于,可以按照Figure_5-6中所述操作这些类型的对象。它们的其他一些相似之处和不同之处总结在Eigure 5 = 7中。
Python程序员倾向于使用列表的频率远远高于元组。由于列表是可变的,因此可以在计算过程中以增量方式构造它们。例如,下面的代码以增量方式生成一个列表,其中包含另一个列表中的所有偶数。
由于字符串只能包含字符,因此它们的通用性远不如元组或列表。另一方面,当您使用字符串时,有许多有用的内置方法。Figure_5-8 包含其中一些的简短描述。请记住,由于字符串是不可变的,因此这些字符串都返回值并且没有副作用。
一个更有用的内置方法是 split,它采用两个字符串作为参数。第二个参数指定一个分隔符,该分隔符用于将第一个参数拆分为子字符串序列。例如
打印:
第二个参数是可选的。如果省略该参数,则使用任意空格字符字符串(空格、制表符、换行符、返回和表单馈送)拆分第一个字符串。
集合
集合是另一种集合类型。它们类似于数学中集合的概念,因为它们是唯一元素的无序集合。它们使用程序员称为大括号和数学家称为集合大括号来表示,例如,
由于集合的元素是无序的,因此尝试索引到集合中,例如,计算baseball_teams[0],会生成运行时错误。我们可以使用 for 语句来迭代集合的元素,但与我们见过的其他集合类型不同,元素的生成顺序是未定义的。
与列表一样,集合也是可变的。我们使用 add 方法将单个元素添加到集合中。我们通过向 update 方法传递元素集合(例如,列表)将多个元素添加到集合中。例如,代码
打印:
(元素的显示顺序不是由语言定义的,因此,如果运行此示例,可能会获得不同的输出。
可以使用 remove 方法从集合中移除元素,如果元素不在集合中,则会引发错误,或者使用 discard 方法(如果元素不在集合中,则不会引发错误)。集合中的成员身份可以使用 in 运算符进行测试。例如,baseball_teams中的“落基山脉”返回 True。二进制方法并集、交集、差分和次元集具有其通常的数学含义。例如
打印
关于集合的一个好处是,许多方法都有方便的中缀运算符,包括 i 表示并集,&或相交,- 表示差分,<= 表示子集,>= 表示超集。使用这些运算符可使代码更易于阅读。例如,
到前面介绍的代码,该代码使用点表示法打印相同的值。
并非所有类型的对象都可以是集合的元素。集合中的所有对象都必须是可哈希的。如果对象具有一个散 列将类型的对象映射到 int 的方法,以及由hash_does在对象的生存期内不会更改,并且一个等式用于将其与其他对象相等进行比较的方法。
Python的标量不可变类型的所有对象都是可哈希的,并且Python的内置可变类型的任何对象都不是可哈希的。如果非标量不可变类型(例如元组)的对象的所有元素都是可哈希的,则该对象是可哈希的。