Python基础教程(一)列表和元组

MAR

24

人的天才只是火花,要想使他成熊熊火焰,那就只有学习!学习。

——高尔基

数据结构是以特定方式(比如编号)组合起来的数据元素(如数字、字符及其他数据结构)集合,数据结构决定算法,是编程语言不可或缺的部分。

Python中最基本的数据结构是序列(sequence),内置的序列有多种,最常用的序列就是列表、元组和字符串。这篇文章主要讲列表和元组,字符串下一篇再讲。

列表和元组是相似的,或者说所以序列都是相似的,有通用的序列操作,比如索引、切片、相加、相乘、迭代、成员资格检查以及一些内置函数。列表和元组作为两种不同的序列,也有其不同之处。列表可修改而元组不行。这意味着列表适用于中途需要添加删除等修改元素的情形,而元组适用于初始化后禁止修改的情形。还有一点需要注意,几乎所有情况下都可以使用列表代替元组,除了一种情况,即元组作为字典键时,因为字典键是不允许修改的。

通用序列操作

索引

序列中所有元素都拥有编号(索引),从0开始递增。可以用正数索引和负数索引,-1是最后一个元素的位置。

切片

对于日常写JS的我来说,Python的切片语法真是简洁到爆。切片适用于提取序列的一部分,第一个索引包含的第一个元素的编号,第二个索引是切片后余下的第一个元素的编号,意思是切片不会切下第二个索引位置的元素。

如果切片始于序列开头,可省略第一个索引,如果切片结束于序列末尾,可省略第二个索引。

如果要复制整个序列,可以将两个索引都省略。

当我们执行切片操作的时候往往只指定两个参数,但通常还有一个隐式参数,步长。步长的缺省值为1,也可以由我们自己指定。指定步长为n,则每隔n-1个元素提取一个元素。

相加

同类型的序列能够使用加法运算符相加拼接,这一点在JavaScript中往往不符预期,Python中却不会。

乘法

将序列和数x相乘,将重复这个序列x次来创建一个新序列。

如果想初始化一个代表什么都没有的空列表,可以使用None来表示

成员资格

要检查特定的值是否包含在序列中,可以使用运算符in。in操作符检查是否满足指定条件返回相应的布尔值。

长度、最小值和最大值

函数len返回序列包含的元素个数,min和max返回序列最小值和最大值。

列表list

列表是序列的主力,不同于元组和字符串,它可以修改,并且有很多特有的方法。list类可以将任何序列作为参数来创建一个列表。

列表基本操作

给元素赋值

删除元素 del

给切片赋值

通过切片赋值,可以将切片替换成不同长度的序列

append方法将一个对象附加到列表末尾,直接修改旧列表而不是返回新列表

clear方法清空列表,相当于切片

copy方法复制列表,和或效果一样

extend方法可将多个值同时附加到列表末尾,相当于Javascript数组操作方法中的concat方法

index方法寻找某元素在列表中第一次出现的索引

insert方法用于将一个对象插入列表

pop方法从列表删除一个元素,pop是既修改列表又返回一个非None值的列表方法,使用pop和append方法可以实现后进先出(LIFO)的的栈(stack)

remove方法用于删除第一个为指定值的元素

reverse方法按相反顺序排列列表中的元素

sort方法对列表就地排序,意味着对列表修改,却不返回任何值,如果需要得到排序前后的列表,需要将列表copy一次再进行排序操作。sort方法接受两个可选参数,暂时不提。

元组tuple

元组也是序列,但是不能修改。将一些值用逗号排列就能自动创建元组,但是通常做法是将元素用圆括号括起来。空元组用两个不包含内容的圆括号表示。如果是一个值的元组,必须在那个元素后面加一个逗号。

一般而言,列表满足对序列的要求,但是元组有很多运用场景,比如作为映射中的键,函数返回值等。

本篇主要讲述了序列的通用操作以及列表的一些特定操作方法,下一篇将继续介绍字符串。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180324A0HXAL00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励