Python零基础入门学习05:容器数据类型:列表和元组

:本文所有代码均经过Python 3.7实际运行检验,保证其严谨性。

数据收纳盒

收纳数据对象的数据类型,以一种规则的下标索引方式访问到每个数据,是一种序列(sequence)。序列可以看作是数据收纳盒,它能收纳数字、字符串等基本数据类型,并将之编好有序的号码进行存放。这种编号就是索引(index)。

列表(list)和元组(tuple)均属于序列

列表可以删除、添加、替换、重排其中的元素,是可变(mutable)序列类型。

元组不能更改,和字符串一样,是不可变(immutable)序列类型。凡是涉及到元组、字符串等不可变序列类型的各种改变如删除、添加、替换、重排等操作,都是生成一个新的元组、字符串,而原来的元组和字符串均保持不变。

关于序列的更多详细内容请见:Python随笔:Python内置序列函数之enumerate函数的前半部分。

上一节说过,字符串有两套编号:

  • 从左向右的编号,采用非负整数编号。从0开始编号,向右依次加1。对s = 'abc'而言,s[0] = 'a'表示s的第1个元素,s[1] = 'b'表示s的第2个元素,依此类推。
  • 从右向左的编号,采用负整数编号。从-1开始,向左依次减1。对s = 'abc'而言,s[-1] = 'c'表示s的倒数第1个元素,s[-2] = 'b'表示s的
    倒数第2个字符,依此类推。

列表和元组也是一样的。如下所示:

l = ['a', 'b', 'c']

l[0]
Out[2]: 'a'

l[-1]
Out[3]: 'c'

t = ('a', 'b', 'c')

t[0]
Out[5]: 'a'

t[-1]
Out[6]: 'c'

列表和元组其余的操作如切片、查找(in、index、count)跟字符串相同,还有计算(sum、min/max)也是如此。

ls = ["cat", "dog", "tiger", 1024]
ls[1: 2] = [1, 2, 3, 4]  #切片
print(ls)
列表、元组的创建
#创建列表:
l = []
l = list()
l = [x for x in iterable]  #使用列表推导式创建列表。

#创建元祖:
t = ()
t = tuple()
元祖的单例(singleton)

元组还可以是单例(singleton),即只有一个元素在里面,如:

t1 = ('a', )

值得注意的是,当元组是单例时,里面仅有的1个元素后面必须跟一个逗号“,”。逗号“,”表明了这是个元组里面的元素,而不是只是一个字符串或者数字或者字符等;若没有逗号,则括号会被当作是运算的符号。

元组甚至也可以不要括号,直接用“,”。所以,对元组而言,括号可以没有,但逗号一定要有。

t1 = ('a',)  # 带“,”的才是元组

type(t1)
Out[8]: tuple

t2 = ('a')  # 不带“,”是字符串或整数。

type(t2)
Out[10]: str

type(t3)
Out[12]: tuple

t4 = 1, 2, 3

type(t4)
Out[14]: tuple
列表的可变性

列表有一个非常重要的与众不同之处,那就是列表是可变的(mutable)。

这个特性与其它数据类型都不相同,因为int、float、string和tuple等数据类型一旦创建后都是不可变的(immutable)。你不能通过访问string或者tuple里的某个元素来改变他们。比如tuple一旦下了定义,再想用tuple[0]= 2这种赋值方法改变tuple时,系统将会报错。

而列表lists则可以通过访问某些内部元素进而改变它们的值,有时候这是非常方便的。

可变性使得程序可以被更灵活地处理。尽管如此,同样也很容易造成程序设计错误。

l = [1, 2, 3, 4]

l[0] = ['a']

l[-1] = 'd'

l
Out[18]: [['a'], 2, 3, 'd']
列表的操作

s.append(x)——将 x 添加到序列的末尾 (等同于 s[len(s):len(s)] = [x])。

s.insert(i, x)——在由 i 给出的索引位置将 x 插入 s (等同于 s[i:i] = [x])。

s.extend(t) 或 s += t——用 t 的内容扩展 s (基本上等同于 s[len(s):len(s)] = t)。

s.pop([i])——提取在 i 位置上的项,并将其从 s 中移除。可选参数 i 默认为 -1,因此在默认情况下会移除并返回最后一项。

s.remove(x)——删除 s 中第一个 s[i] 等于 x 的项目。当在 s 中找不到 x 时 remove() 操作会引发 ValueError。返回值为None。

s.clear()——从 s 中移除所有项 (等同于 del s[:])。包括 clear() 和 copy() 是为了与不支持切片操作的可变容器 (例如 dict 和 set) 的接口保持一致。

s.reverse()——就地将列表中的元素逆序。当反转大尺寸序列时 reverse() 方法会原地修改该序列以保证空间经济性。 为提醒用户此操作是通过间接影响进行的,它并不会返回反转后的序列。

s.sort(*, key=None, reverse=False)——此方法会对列表进行原地排序,只使用 < 来进行各项间比较。 异常不会被屏蔽 , 如果有任何比较操作失败,整个排序操作将失败(而列表可能会处于被部分修改的状态)。

合并:加法运算+,连接2个列表,生成1个新的列表。

下面是列表操作的一些例子:

l = [1, 2, 3, 4]

l[0]  # 访问l中的index=0(即列表中的第1个)的元素。
Out[20]: 1

l.append(5)  # 在l的尾部添加一个新的元素。

l
Out[22]: [1, 2, 3, 4, 5]

l.reverse()  # 使l中的元素逆序排列,并改变了l自身。

l
Out[24]: [5, 4, 3, 2, 1]

l.clear()  # 清空l中的所有元素,使得l成为一个空列表。

l
Out[26]: []

[1, 2, 3] + [4, 5]
Out[27]: [1, 2, 3, 4, 5]

To be continued.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,236评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,867评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,715评论 0 340
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,899评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,895评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,733评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,085评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,722评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,025评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,696评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,816评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,447评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,057评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,254评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,204评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,561评论 2 343