python列表(List)

列表(list)是python中常用的一种类型。

列表是由若干值组成的序列,这些值可以是任何类型。

列表是可变的。

创建列表

创建一个列表,只需要将逗号(,)隔开的值用方括号[]括起来就行。

>>> [1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]

这就创建了一个列表,它的值分别是1,2,3,4,5.

列表内的值可以是不同的类型:

>>> [1, 2.5, 'mwang']
[1, 2.5, 'mwang']

当然,值也可以是列表类型,这也叫做列表的嵌套:

>>> [1, ['a', 'b'], 2, ['c', 'd']]
[1, ['a', 'b'], 2, ['c', 'd']]

这个列表有四个值,分别是:

  1. 整数1
  2. 列表['a', 'b']。这个列表包含两个值,第1个是字符a,第2个是字符b
  3. 整数2
  4. 列表['c', 'd']。这个列表包含两个值,第1个是字符c,第2个是字符d

也可以创建一个空列表:

>>> []
[]

可以将列表赋值给一个变量:

>>> name = ['zhao', 'qian', 'sun', 'li']
>>> name
['zhao', 'qian', 'sun', 'li']

列表是可变的,这意味着可以对列表进行重新赋值:

>>> name = ['zhao', 'qian', 'sun', 'li']
>>> name
['zhao', 'qian', 'sun', 'li']
>>> name = [1, 2, 3, 4]
>>> name
[1, 2, 3, 4]

使用运算符+连接列表:

>>> name1 = ['zhao', 'qian', 'sun', 'li']
>>> name2 = ['zhou', 'wu', 'zheng', 'wang']
>>> name = name1 + name2
>>> name
['zhao', 'qian', 'sun', 'li', 'zhou', 'wu', 'zheng', 'wang']

上面的例子中,+将列表name1与列表name2按照写明的顺序连接,生成一个新的列表。把这个新列表赋值给变量name

如果列表中有重复的值,可以使用*创建列表:

>>> age = ['wang', 24] * 4
>>> age
['wang', 24, 'wang', 24, 'wang', 24, 'wang', 24]

例子中,列表['wang', 24]被重复4次,生成一个新列表,并将新列表赋值给变量age

访问列表中的值

通过下标(index)作为索引,可以访问列表中的值。

列表中的第1个值的下标是0,第2个值的下标是1,第3个值的下标是2……依此类推。

还有一种负数的索引方法,列表中最后1个值的下标是-1,倒数第2个值的下标是-2,倒数第3个值的下标是-3……依此类推。

例如下面的这个列表:

name = ['zhao', 'qian', 'sun', 'li']

name列表的索引如下:

索引(下标) 负数的索引(下标)
'zhao' 0 -4
'qian' 1 -3
'sun' 2 -2
'li' 3 -1

可以看到,对于有4(n)个值的列表,它的正数下标只能到3(n-1)。可以使用两种索引方式中的任意一种(或者混用)访问列表中的值:

>>> name = ['zhao', 'qian', 'sun', 'li']
>>> name[1]     # 第2个值
'qian'
>>> name[-3]    # 倒数第3个值
'qian'
>>> name[0]     # 第1个值
'zhao'
>>> name[-1]    # 最后1个值
'li'
>>> name[4]     # 超出范围的下标
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range

访问嵌套列表中的值:

>>> infomation = ['name', ['male', 'female'], 'age']
>>> infomation[1]
['male', 'female']
>>> infomation[1][0]
'male'

截取列表

可以截取列表的一部分。

首先创建一个列表:

>>> letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g']

截取列表的一部分,需要使用下标和冒号:,截取出的部分会成为一个新列表。

下面是一些例子:

>>> letters
['a', 'b', 'c', 'd', 'e', 'f', 'g']
>>> letters[1:5]        # 第2到第5个值
['b', 'c', 'd', 'e']
>>> letters[1:-2]       # 第2到倒数第3个值
['b', 'c', 'd', 'e']
>>> letters[:5]         # 第1个值到第5个值
['a', 'b', 'c', 'd', 'e']
>>> letters[:-3]        # 第1到倒数第4个值
['a', 'b', 'c', 'd']
>>> letters[4:]         # 从第5个值到最后一个值
['e', 'f', 'g']
>>> letters[:]          # 所有值
['a', 'b', 'c', 'd', 'e', 'f', 'g']

对于list[n1:n2],截取列表中从下标n1到下标n2-1(即下标包含n1但不包含n2)的部分,并将此部分作为一个新的列表。

更新列表

列表中的值是可变的。

使用list.append(obj)在列表末尾增加一个值:

>>> letters
['a', 'b', 'c', 'd', 'e', 'f', 'g']
>>> letters.append('h')
>>> letters
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']

例子中列表letters末尾增加了一个值'h'

使用list.pop(index)删除列表中的一个值,默认是最后一个值,函数返回该值:

>>> letters
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
>>> letters.pop()
'h'
>>> letters
['a', 'b', 'c', 'd', 'e', 'f', 'g']

例子中删除了列表letters中的最后一个元素'h',并返回该值。

下面是三个常用的函数:

>>> letters
['a', 'b', 'c', 'd', 'e', 'f', 'g']
>>> len (letters)       # 返回列表中值的个数
7
>>> max (letters)       # 返回列表中'最大'的值
'g'
>>> min (letters)       # 返回列表中'最小'的值
'a'

函数list.index(obj)返回objlist中第一个匹配项的下标,函数list.index(index,obj)list中下标为index的位置插入值obj,下面是一个例子。

>>> letters
['a', 'b', 'c', 'd', 'e', 'f', 'g']
>>> if 'c' in letters:                  # 判断'c'是否在letters内
...     c_index = letters.index ('c')   # 取得第一个'c'的下标,赋值给变量c_index
...     letters.insert (c_index, 'z')   # 在下标c_index的位置插入'z'
... 
>>> letters
['a', 'b', 'z', 'c', 'd', 'e', 'f', 'g']

由于'c'letters内,所以布尔表达式为真;取得第一个'c'的下标为2,保存到变量c_index中;在下标为c_index(2)的位置插入'z'

使用list.remove(obj)删除list中第一个obj的匹配项:

>>> name
['li', 'qian', 'sun', 'zhao', 'sun']
>>> name.remove('sun')
>>> name
['li', 'qian', 'zhao', 'sun']

例子中,列表name中有两个'sun',之后使用name.remove('sun')删除了其中的第一个'sun'

>>> name
['li', 'qian', 'zhao', 'sun', 'qian']
>>> name.count ('qian')
2

list.count(obj)返回在listobj出现的次数。上面的例子中'qian'name中出现了2次。

list.reverse()对列表中的值进行反向:

>>> name
['li', 'qian', 'zhao', 'sun', 'qian']
>>> name.reverse()
>>> name
['qian', 'sun', 'zhao', 'qian', 'li']

list.sort()对列表中的值进行排序:

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

推荐阅读更多精彩内容