内置数据结构-列表

列表是一种线性的数据结构,类似于其他编程语言中的数组

创建列表

python中创建列非常简单直接使用函数list() 里面放入一个可迭代对象就初始化了一个列表或者使用[],里面放入一些元素

初始化一个空列表
In [1]: lst = list()

In [2]: lst
Out[2]: []

In [3]: lst2 = []

In [4]: lst
Out[4]: []

In [5]: type(lst)
Out[5]: list

In [7]: lst3 = [1,2,'a']

操作列表

通过下标/索引来操作列表
list中的索引从0开始,负数表示从后往前,由-1开始,-1也表示最后一个元素

In [7]: lst3 = [1,2,'a']

取出第一个元素
In [8]: lst3[0]
Out[8]: 1

取出最后一个元素
In [9]: lst3[-1]
Out[9]: 'a'

如果下标数取值超出列表的长度,则会报错
In [10]: lst3[-3]
Out[10]: 1

In [11]: lst3[-4]
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-11-61b7c59df4ce> in <module>()
----> 1 lst3[-4]

IndexError: list index out of range

In [12]: lst3[4]
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-12-96a8c006aa10> in <module>()
----> 1 lst3[4]

IndexError: list index out of range

修改列表中的元素

In [13]: lst3[0] = 10

In [15]: lst3
Out[15]: [10, 2, 'a']

超出列表的长度还是会报错
In [16]: lst3[10] = 10
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-16-2fab583fdf53> in <module>()
----> 1 lst3[10] = 10

IndexError: list assignment index out of range

向列表中添加数据
append()方法,原地修改列表,在列表最后追加元素,返回值为None

In [17]: lst3.append('hello list')

In [19]: lst3
Out[19]: [10, 2, 'a', 'hello list']

insert()方法,原地修改列表,在指定的索引对应的元素前面添加元素,返回值为None

In [20]: lst3.insert(1,'new')

In [21]: lst3
Out[21]: [10, 'new', 2, 'a', 'hello list']

超出列表最大正索引长度时,相当于append
In [22]: lst3.insert(10,'insert')

In [23]: lst3
Out[23]: [10, 'new', 2, 'a', 'hello list', 'insert']

超出列表最大负索引长度时,相当于在最开头插入一个元素
In [24]: lst3.insert(-10,'head')

In [25]: lst3
Out[25]: ['head', 10, 'new', 2, 'a', 'hello list', 'insert']

以上添加元素只能添加一个,如果要把一个列表追加到现有的list中使用extend方法

In [26]: lst3.extend([1,2,3,4])

In [27]: lst3
Out[27]: ['head', 10, 'new', 2, 'a', 'hello list', 'insert', 1, 2, 3, 4]

删除列表中的元素
pop()方法,默认从列表最后弹出一个元素,超出索引范围会报错

In [27]: lst3
Out[27]: ['head', 10, 'new', 2, 'a', 'hello list', 'insert', 1, 2, 3, 4]

In [28]: lst3.pop()
Out[28]: 4

In [29]: lst3.pop(2)
Out[29]: 'new'

In [30]: lst3.pop(100)
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-30-70b6a0f18f10> in <module>()
----> 1 lst3.pop(100)

IndexError: pop index out of range

remove()方法,删除传入的元素值,如果有重复的元素,从向前往后默认删除第一个,如果删除的值不存在,会抛出ValueError的错误

In [31]: lst3
Out[31]: ['head', 10, 2, 'a', 'hello list', 'insert', 1, 2, 3]

In [32]: lst3.remove('insert')

In [33]: lst3
Out[33]: ['head', 10, 2, 'a', 'hello list', 1, 2, 3]

In [34]: lst3.remove(2)

In [35]: lst3
Out[35]: ['head', 10, 'a', 'hello list', 1, 2, 3]

In [37]: lst3.remove(20)
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-37-304e2f23f401> in <module>()
----> 1 lst3.remove(20)

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

clear()方法清除列表中所有的元素,变成一个空列表

查找/统计元素

index()方法返回value对应的索引,可以给定一个索引范围来查找,有重复的元素返回第一个元素

In [40]: lst3.index('hello list')
Out[40]: 3

In [41]: lst3.index('hello list',4)
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-41-db5d1fa44a57> in <module>()
----> 1 lst3.index('hello list',4)

ValueError: 'hello list' is not in list

In [42]: lst3.index('hello list',2,4)
Out[42]: 3

In [43]: lst3
Out[43]: ['head', 10, 'a', 'hello list', 1, 2, 3]

In [44]: lst3.append('a')

In [45]: lst3
Out[45]: ['head', 10, 'a', 'hello list', 1, 2, 3, 'a']

In [46]: lst3.index('a')
Out[46]: 2

In [47]: lst3.index('a',4)
Out[47]: 7

count()方法统计列表中的某个元素的个数

In [45]: lst3
Out[45]: ['head', 10, 'a', 'hello list', 1, 2, 3, 'a']

In [48]: lst3.count(2)
Out[48]: 1

In [49]: lst3.count('a')
Out[49]: 2

len() 内置方法, 可以返回列表的长度

In [50]: len(lst3)
Out[50]: 8

修改列表

sort() 原地修改列表,对列表排序,如果列表中有字符串和数字,不能排序,纯字符按ASCII码的顺序排序

In [45]: lst3
Out[45]: ['head', 10, 'a', 'hello list', 1, 2, 3, 'a']

In [51]: lst3.sort()
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-51-66fcd4f5d9f8> in <module>()
----> 1 lst3.sort()

TypeError: unorderable types: int() < str()

In [52]: lst2 = ['a', 'b', 'c', 'd']

In [53]: lst2.sort()

In [54]: lst2
Out[54]: ['a', 'b', 'c', 'd']

In [55]: lst2.sort(reverse=True)

In [56]: lst2
Out[56]: ['d', 'c', 'b', 'a']

reverse()对列表进行逆序

In [45]: lst3
Out[45]: ['head', 10, 'a', 'hello list', 1, 2, 3, 'a']

In [57]: lst3.reverse()

In [58]: lst3
Out[58]: ['a', 3, 2, 1, 'hello list', 'a', 10, 'head']

其他方法

copy() copy一个列表,是浅拷贝

In [59]: lst = lst3.copy()

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

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,580评论 18 139
  • 本文为《爬着学Python》系列第九篇文章。 从现在开始算是要进入“真刀真枪”的Python学习了。之所以这么说,...
    SyPy阅读 2,127评论 0 14
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,560评论 18 399
  • http://python.jobbole.com/85231/ 关于专业技能写完项目接着写写一名3年工作经验的J...
    燕京博士阅读 7,545评论 1 118
  • 独立思考的能力,我想这是我目前最欠缺的吧。人的惰性作祟,很多时候都奉行拿来主义。遇到问题不会,没有通过自己的思考,...
    黑赛矩阵阅读 169评论 2 1