python列表

什么是列表

list(列表)是一种有序的数据集合。

举例说明,在交互式环境中输入下面的内容,其中 courses 就是一个列表:

>>> courses = ['Linux', 'Python', 'Vim', 'C++']

>>> courses.append('PHP')

>>> courses

['Linux', 'Python', 'Vim', 'C++', 'PHP']

首先我们建立了一个列表 courses。然后调用列表的方法 courses.append('PHP') 添加元素PHP 到列表末尾。你可以看到元素字符串 PHP 已经添加到列表的末端了。

列表中的索引类似 C 语言中数组的访问索引,可以通过索引访问到每一个列表的元素,第一个元素的索引为 0,最后一个元素的索引可以使用 -1 进行标示,这一点与上一节中的字符串的索引完全相同。

>>>

>>> courses[0]

'Linux'

>>> courses[-1]

'PHP'

>>> courses[-2]

'C++'

>>> courses[9]

Traceback (most recent call last):

File"<stdin>", line 1, in <module>

IndexError: list index out of range

超出索引的最大数字范畴,会出现越界,抛出 IndexError 异常,回忆下上一节的异常的内容。

如何知道列表中元素的数量呢,可以使用 len():

>>> len(courses)

5

列表操作

上面的例子中我们初步接触到列表的最基本操作 append(),列表是有序的,所以 append() 就是在列表的末尾添加新的元素。

有些时候我们需要将数据插入到列表的任何位置,这时我们可以使用列表的 insert() 方法。

>>> courses.insert(0, 'Java')

>>> courses

['Java', 'Linux', 'Python', 'Vim', 'C++', 'PHP']

>>> courses.insert(1, 'Ruby')

>>> courses

['Java', 'Ruby', 'Linux', 'Python', 'Vim', 'C++', 'PHP']

列表方法 count(s) 会返回列表元素中 s 的数量。我们来检查一下 Java 这个元素在列表中出现了多少次。

>>> courses.count('Java')

1

如果你想要在列表中移除任意指定值,你需要使用 remove() 方法。

>>> courses.remove('Java')

>>> courses

['Ruby', 'Linux', 'Python', 'Vim', 'C++', 'PHP']

注意:如果 Java 出现多次,则只有第一个 'Java' 元素会被清除。

>>> courses.insert(1,'Java')

>>> courses.insert(1,'Java')

>>> courses

['Java', 'Java', 'Java', 'Ruby', 'Linux', 'Python', 'Vim', 'C++', 'PHP']

>>> courses.remove('Java')

>>> courses

['Java', 'Java', 'Ruby', 'Linux', 'Python', 'Vim', 'C++', 'PHP']

>>>

另外一种删除元素的方法是使用 del 关键字,这个关键字可以删除列表指定位置的元素,需要使用到列表中要删除元素的索引:

>>> courses

['Ruby', 'Linux', 'Python', 'Vim', 'C++', 'PHP']

>>> del courses[-1]

>>> courses

['Ruby', 'Linux', 'Python', 'Vim', 'C++']

>>> courses.append('PHP')

>>> courses

['Ruby', 'Linux', 'Python', 'Vim', 'C++', 'PHP']

列表是有顺序的,我们在执行所有的列表操作的过程中都要时刻记住这一点,有序的列表可以进行反转:

>>> courses

['Ruby', 'Linux', 'Python', 'Vim', 'C++', 'PHP']

>>> courses.reverse()

>>> courses

['PHP', 'C++', 'Vim', 'Python', 'Linux', 'Ruby']

如果我们有两个列表,想合并到一起,一种方法是将其中一个列表合并到另外一个列表的末尾位置,可以使用 extend():

定义一个新的课程 new_courses

>>> new_courses = ['BigData', 'Cloud']

>>> courses.extend(new_courses)

>>> courses

['PHP', 'C++', 'Vim', 'Python', 'Linux', 'Ruby','BigData', 'Cloud']

给列表排序,我们使用列表的 sort() 方法,排序的前提是列表的元素是可比较的,例如数字是按照大小进行排序,而字符串则会选择按照字母表的顺序进行排序,在我们的课程列表的例子中,我们先使用该函数默认的排序方法,是按照字母表顺序:

>>> courses

['PHP', 'C++', 'Vim', 'Python', 'Linux', 'Ruby','BigData', 'Cloud']

>>> courses.sort()

>>> courses

['BigData', 'C++', 'Cloud', 'Linux', 'PHP', 'Python','Ruby', 'Vim']

列表也可以使用 pop() 函数返回最后的一个元素,pop() 在返回元素的同时也会删除这个元素,传入一个参数 i 即 pop(i) 会将第 i 个元素弹出:

>>> courses

['BigData', 'C++', 'Cloud', 'Linux', 'PHP', 'Python','Ruby', 'Vim']

>>> c = courses.pop()

>>> c

'Vim'

>>> courses

['BigData', 'C++', 'Cloud', 'Linux', 'PHP', 'Python','Ruby']

>>> courses.pop()

'Ruby'

>>> courses.pop()

'Python'

>>> courses

['BigData', 'C++', 'Cloud', 'Linux', 'PHP']

>>> courses.pop(0)

'BigData'

>>> courses

['C++', 'Cloud', 'Linux', 'PHP']

本文分享自微信公众号 - 大数据架构师专家(xinsz08)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-10-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏性能与架构

JS闭包

JS的闭包用法给开发带来了极大的便利,它的使用方式非常自然,以至于很多同学并不很了解闭包,却可以在实际开发中顺畅的使用了 例如下面的代码,给button添加...

46640
来自专栏数据结构与算法

3185 队列练习 1

3185 队列练习 1 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 给定一...

32560
来自专栏公众号文章

Golang 入门系列(二)Go语言基础语法及需要注意的坑

上一章节我们已经了解了 Go 环境的配置,不了解的,请查看前面的文章 https://www.cnblogs.com/zhangweizhong/p/94599...

7000
来自专栏程序生活

2017/6/9-Python文件读写的方法

# 使用斜杠“/”: "c:/test.txt"… 不用反斜杠就没法产生歧义了 # 将反斜杠符号转义: "c:\\test.txt"… 因为反斜杠是转义符,所...

36670
来自专栏程序员互动联盟

【编程基础】C++ Primer快速入门三:两种控制语句

语句总是顺序执行的:第一条语句执行完了接着是第二条,第三条等等。这是最简单的情况,为了更好的控制语句的运行,程序设计语言提供了多种控制结构支持更为复杂的语句执行...

35090
来自专栏偏前端工程师的驿站

Velocity魔法堂系列二:VTL语法详解

一、前言                               Velocity作为历史悠久的模板引擎不单单可以替代JSP作为Java Web的服务端网页...

25250
来自专栏逆向技术

逆向知识第十二讲,识别全局变量,静态全局变量,局部静态变量,以及变量.

         逆向知识第十二讲,识别全局变量,静态全局变量,局部静态变量,以及变量. 一丶认识全局的 (静态变量 全局变量) 高级代码: int RetIn...

237100
来自专栏java闲聊

Shell入门

a. 单引号(括起来的字符都作为普通字符出现。特殊字符用单引号括起来以后,也会失去原有意义,而只作为普通字符解释)

14640
来自专栏xiaoxi666的专栏

c++ 继承类强制转换时的虚函数表工作原理

本文通过简单例子说明子类之间发生强制转换时虚函数如何调用,旨在对c++继承中的虚函数表的作用机制有更深入的理解。

24230
来自专栏Coding迪斯尼

eactjs开发自制编程语言Monkey的编译器:高能技术干货之语法高亮2

15850

扫码关注云+社区

领取腾讯云代金券