4-Python 列表

课程概要:
  1、列表的基本操作
  2、列表常用函数
  3、列表和字符串的比较


1、列表的基本操作

知识点:
  ◆ 列表(list)定义
  ◆ 索引和切片
  ◆ 基本操作

一、列表定义

◆ 对象类型:list
  ◆ 表示方法:[ ]
  ◆ 列表元素:“有容乃大”

Python列表中元素可以是任何Python 中的对象

例如:字符串 整数 浮点数

>>> a = ['laoshi', 25, 89.9]

>>> b = ['laoshi', 25, 89.9, ['laoshi', 25, 89.9]]

>>> a

['laoshi', 25, 89.9]

>>> b

['laoshi', 25, 89.9, ['laoshi', 25, 89.9]]

>>> c = ['Hello', 'Python']

>>> c         

['Hello', 'Python']

二、索引和切片

◆ 索引:类似“字符串”
  ◆ 切片
  ◆ 反转

 >>>a

['laoshi', 25, 89.9]

>>> b

['laoshi', 25, 89.9, ['laoshi', 25, 89.9]]

>>> c = ['Hello', 'Python']

>>> c

['Hello', 'Python']

>>> a

['laoshi', 25, 89.9]

>>> a[1]

25

>>> a[0]

'laoshi'

>>> a[2]

89.9

1、索引

索引原则:左包括,右不包括

>>> a[0 : 2]

['laoshi', 25]

>>> a[: 2]

['laoshi', 25]

>>> a[0: ]

['laoshi', 25, 89.9]

>>> a[-1]                     #       -1 就是从右边数起

89.9

>>> b

['laoshi', 25, 89.9, ['laoshi', 25, 89.9]]

>>> b[3]

['laoshi', 25, 89.9]

>>> b[3][0]                #       二维列表

'laoshi'

>>> a.index(25)

1

>>> a.index(89.9)

2

>>> a.index("Python")         #       列表没有该元素,使用index则会报错

Traceback (most recent call last):

  File
"<pyshell#27>", line 1, in <module>
  
a.index("Python")

ValueError: 'Python' is not in list

>>> a.index("laoshi")

0

2、切片和反转

>>> lst = [1, 2, 3, 4, 5, 6]

>>> lst[: : -1]               #       列表的反转

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

#       sice([start],stop[, step])
#       起始值     终点值     步长

>>> lst[0 : 4]           #   步长为1,为默认值,写不写都可以

[1, 2, 3, 4]

>>> lst[0 : 4 : 2]

[1, 3]

>>> lst[4 : 1 : -1]

[5, 4, 3]

>>> lst[: : -2]

[6, 4, 2]

>>> list(reversed(lst))                #    列表的反转

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

三、基本操作

◆ 列表是一种序列
  ◆ len
  ◆ +
  ◆ *
  ◆ in
  ◆ max()
  ◆ cmp()

>>> lst

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

>>> len(lst)

6

>>> lst + a

[1, 2, 3, 4, 5, 6, 'laoshi', 25, 89.9]

>>> a * 3

['laoshi', 25, 89.9, 'laoshi', 25, 89.9, 'laoshi', 25, 89.9]

>>> max(lst)

6

>>> min(lst)

1

>>> a

['laoshi', 25, 89.9]

>>> max(a)

'laoshi'

>>> min(a)

25

>>> cmp(a, lst)                                     #       依次比较两个列表中的元素,相同则向后再比较

1

2、列表常用函数

知识点:
  ◆ 追加和扩展
  ◆ 其他函数

一、追加和扩展

◆ append
  ◆ extend
  ◆ 原地修改

1、append

>>>dir(list)

>>> help(list.append)

Help on method_descriptor:

append(...)

L.append(object) -- append object to end
>>> a = [1, 2]

>>> a.append(100)

>>> a

[1, 2, 100]

>>> a.append("Python")

>>> a

[1, 2, 100, 'Python']

>>> a.append(["google", "facebook"])

>>> a

[1, 2, 100, 'Python', ['google', 'facebook']]

>>> b = [1]

>>> id(b)

34938032

>>> b.append(5)

>>> id(b)                       #       原地修改

34938032

>>> b.append("laoqi")

>>> id(b)

34938032

>>> b

[1, 5, 'laoqi']

2、extend

>>> help(list.extend)

Help on method_descriptor:

extend(...)

    L.extend(iterable) --
extend list by appending elements from the iterable
>>> a = [1, 2, 3]

>>> b = [4, 5, 6]

>>> a.extend(b)

>>> a

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

>>> b

[4, 5, 6]

>>> a.extend("Python")

>>> a

[1, 2, 3, 4, 5, 6, 'P', 'y', 't', 'h', 'o', 'n']

>>> a.extend(5)             #       整数是不可迭代的

Traceback (most recent call last):

  File
"<pyshell#26>", line 1, in <module>

    a.extend(5)

TypeError: 'int' object is not iterable

3、查看对象是否是可迭代的

>>> alst = [1, 2]

>>> hasattr(alst, '__iter__')

True

>>> hasattr("Python", '__iter__')

False

>>> hasattr(5, '__iter__')

False
>>> a = [1, 2]

>>> a.append([4, 5])                  

>>> a                          #  使用append, 则[4, 5] 是作为一个整体进行追加

[1, 2, [4, 5]]

>>> a.extend([4, 5])

>>> a                     #  使用extend, 则将[4, 5]的每个元素取出来进行追加

[1, 2, [4, 5], 4, 5]

二、 其他函数

◆ count()
  ◆ index()
  ◆ insert()
  ◆ pop()    remove()
  ◆ reverse()
  ◆ sort()

1、count()

>>> help(list.count)

Help on method_descriptor:

count(...)

    L.count(value) ->
integer -- return number of occurrences of value
>>> a = [1, 1, 1, 2, 2, 1]

>>> a.count(1)

4

>>> a.count(2)

2

2、index()

>>> help(list.index)

Help on method_descriptor:

index(...)

    L.index(value, [start,
[stop]]) -> integer -- return first index of value.

    Raises ValueError if the
value is not present.
>>> a

[1, 1, 1, 2, 2, 1]

>>> a.index(1)                    #   返回该值出现的第一次的索引值

0

>>> a.index(2)

3

3、insert()

>>> help(list.insert)

Help on method_descriptor: 

insert(...)

    L.insert(index, object) --
insert object before index
>>> a = ["Python", "web"]

>>> a.insert(1, "yummy")                  #       插入到当前列表索引为1的元素前

>>> a

['Python', 'yummy', 'web']                  

>>> a.insert(0, 23415435)

>>> a

[23415435, 'Python', 'yummy', 'web']

4、pop()

>>> help(list.pop)

Help on method_descriptor:

pop(...)

    L.pop([index]) -> item
-- remove and return item at index (default last).

    Raises IndexError if list
is empty or index is out of range.
>>> a

[23415435, 'Python', 'yummy', 'web']

>>> a.pop(1)

'Python'

>>> a

[23415435, 'yummy', 'web']

>>> a.pop()

'web'

>>> a

[23415435, 'yummy']

>>> a.pop(2)

Traceback (most recent call last):

  File
"<pyshell#62>", line 1, in <module>

    a.pop(2)

IndexError: pop index out of range

5、remove()

>>> help(list.remove)

Help on method_descriptor: 

remove(...)

    L.remove(value) -- removefirst occurrence of value.

    Raises ValueError if the
value is not present.
>>> a = ["taishan", "huashan",
"huangshan"]

>>> a.remove("taishan")            #       只删除第一个出现值

>>> a

['huashan', 'huangshan']

>>> a.remove("songshan")

Traceback (most recent call last):

  File
"<pyshell#67>", line 1, in <module>

   
a.remove("songshan")

ValueError: list.remove(x): x not in list

6、reverse()

>>> help(list.reverse)

Help on method_descriptor:

reverse(...)

    L.reverse() -- reverse *IN
PLACE*
>>> a = [1, 2, 3, 4]      #       反转

>>> a[: : -1]

[4, 3, 2, 1]

>>> list(reversed(a))

[4, 3, 2, 1]

>>> a

[1, 2, 3, 4]

>>> a.reverse()

>>> a

[4, 3, 2, 1]

7、sort()

>>> help(list.sort)

Help on method_descriptor:

sort(...)

    L.sort(cmp=None, key=None,
reverse=False) -- stable sort *IN PLACE*;

    cmp(x, y) -> -1, 0, 1
>>> help(sorted)

Help on built-in function sorted in module __builtin__:

sorted(...)

    sorted(iterable, cmp=None,
key=None, reverse=False) --> new sorted list
>>> a = [5, 3, 9, 2]

>>> a.sort()                                           #       升序

>>> a

[2, 3, 5, 9]

>>> b = [9, 2, 7, 4]

>>> b.sort(reverse=True)                            #       降序

>>> b

[9, 7, 4, 2]

Python排序相关文档: https://docs.python.org/2.7/howto/index.html


3、列表和字符串比较

知识点:
  ◆ 序列
  ◆ 列表和字符串的比较

一、序列

◆ 序列:数学上,序列是被排成一列的对象(或事件);这样,每个元素不是在其他元素之前,就是在其他元素之后。这里,元素之间的顺序非常重要。(来源于《维基百科》)

二、列表和字符串的比较

◆ 字符串是不可改变的
  ◆ 列表是可以原地修改的
  ◆ list() 和 str() 的使用

>>> a = [1, 2, 3]

>>> id(a)

34938032

>>> a.append(4)

>>> a

[1, 2, 3, 4]

>>> id(a)

34938032

>>> a[1] = 9        #       列表是可修改的

>>> a

[1, 9, 3, 4]
>>> b = "Python"

>>> b[1] = 'w'                  #       字符串不可修改的

Traceback (most recent call last):

  File
"<pyshell#91>", line 1, in <module>

    b[1] = 'w'

TypeError: 'str' object does not support item assignment

非要修改

>>> b[0] + 'w' + b[2:]

'Pwthon'

>>> b

'Python'
>>> a              #  一维列表

[1, 9, 3, 4]

>>> m = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]        #   多维列表

>>> m[1]

[4, 5, 6]

>>> m[1][1]

5

>>> m[1][0]

4
>>> b

'Python'

>>> list(b)

['P', 'y', 't', 'h', 'o', 'n']

>>> a = "Python is good"

>>> a.split(" ")

['Python', 'is', 'good']

>>> c = list(b)

>>> c

['P', 'y', 't', 'h', 'o', 'n']

>>> " ".join(c)

'P y t h o n'

>>> "".join(c)

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

推荐阅读更多精彩内容