1.Python 列表(List)

  • 序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。
  • Python有6个序列的内置类型,但最常见的是列表和元组。
  • 序列都可以进行的操作包括索引,切片,加,乘,检查成员。
  • 此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法。
  • 列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。
  • 列表的数据项不需要具有相同的类型

1.1创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。如下所示:

list1 = ['python', 'java', 2016, 2000];

list2 = [1, 2, 3, 4, 5 ];

list3 = ["a", "b", "c", "d"];

与字符串的索引一样,列表索引从0开始。列表可以进行截取、组合等。

1.2访问列表中的值

使用下标索引来访问列表中的值,同样你也可以使用方括号的形式截取字符

示例1:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2016/9/11 10:10
# @Author  : wwyx
list1 = ["python", "python", 2016, 2000]
list2 = [1, 2, 3, 4]
list3 = ["a", "b", "c", "d"]

print "list1[0]", list1[0]
print "list2[:3]", list3[:3]
print "list3[0:]", list3[0:]

示例1 运行结果:

list1[0] python
list2[:3] ['a', 'b', 'c']
list3[0:] ['a', 'b', 'c', 'd']

这里还要提到跟访问列表相关的一个概念——切片

什么是切片?

字符串、列表、元组在python中都符合“序列”这一特征,只要符合这一特征的变量我们都可以用切片(slice)去存取它们的任意部分。我们可以把序列想像成一个队列,我可能需要前面三位、后面三位、或从第三位后的四位、或隔一个取一个等,我们用切片操作符来实现上述要求。

切片操作符在python中的原型是

[start:stop:step]

即:[开始索引:结束索引:步长值]

  • 开始索引:同其它语言一样,从0开始。序列从左向右方向中,第一个值的索引为0,最后一个为-1
  • 结束索引:切片操作符将取到该索引为止,不包含该索引的值。
  • 步长值:默认是一个接着一个切取,如果为2,则表示进行隔一取一操作。步长值为正时表示从左向右取,如果为负,则表示从右向左取。步长值不能为0

示例2:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2016/9/11 10:10
# @Author  : wwyx
list1 = ["python", "python", 2016, 2000]
print "list1[0]", list1[0:2:3]

示例2 运行结果:

list1[0] ['python']

1.3更新列表

你可以对列表的数据项进行修改或更新,你也可以使用append()方法来添加列表项

示例3:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2016/9/11 10:10
# @Author  : wwyx
list1 = ["python", "python", 2016, 2000]
print "索引为2的项:", list1[2]
list1[2] = 2017
print "索引为2的项赋值后:", list1[2]

示例3 运行结果:

索引为2的项: 2016
索引为2的项赋值后: 2017

注意:我们会在接下来的章节讨论append()方法的使用

1.4 删除列表元素

可以使用 del 语句来删除列表的的元素

示例4

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2016/9/11 10:10
# @Author  : wwyx
list1 = ["python", "java", 2016, 2000]
print "打印list1:", list1
del list1[1]
print "删除list1索引为1的项后:", list1

示例4 运行结果:

打印list1: ['python', 'java', 2016, 2000]
删除list1索引为1的项后: ['python', 2016, 2000]

注意:我们会在接下来的章节讨论remove()方法的使用

2. Python列表脚本操作符

列表对 + 和 * 的操作符与字符串相似。+ 号用于组合列表,* 号用于重复列表。

如下所示:

Python 表达式

结果

描述

len([1, 2, 3])

3

长度

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

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

组合

['Hi!'] * 4

['Hi!', 'Hi!', 'Hi!', 'Hi!']

重复

3 in [1, 2, 3]

True

元素是否存在于列表中

for x in [1, 2, 3]: print x,

1 2 3

迭代

3.Python列表截取

Python的列表截取与字符串操作类型,如下所示:

L = ['spam', 'Spam', 'SPAM!']

操作:

Python 表达式

结果

描述

L[2]

'SPAM!'

读取列表中第三个元素

L[-2]

'Spam'

读取列表中倒数第二个元素

L[1:]

['Spam', 'SPAM!']

从第二个元素开始截取列表

4.Python列表函数&方法

4.1 函数

  (1).比较两个列表的元素:cmp(list1, list2)

    例如: 

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2016/9/11 10:10
# @Author  : wwyx
list1 = ["python", "java", 2016, 2000]
list2 = ["python", "java", 2016, 2000]
list3 = [1, 2, 3]
var1 = cmp(list1, list2)
var2 = cmp(list1, list3)
print "list1 和 list2 比较结果:", var1
print "list1 和 list3 比较结果:", var2

以上结果:

list1 和 list2 比较结果: 0
list1 和 list3 比较结果: 1

  (2). 元素个数:len(list)

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2016/9/11 10:10
# @Author  : wwyx
list1 = ["python", "java", 2016, 2000]
list2 = ["python", "java", 2016, 2000]
list3 = [1, 2, 3]
var1 = len(list1)
var2 = len(list3)
print "list1 长度:", var1
print "list3 长度:", var2

以上示例运行结果:

list1 长度: 4
list3 长度: 3

  (3). 返回列表最大值:max(list)

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2016/9/11 10:10
# @Author  : wwyx
list1 = ["python", "java", 2016, 2000]
list2 = ["python", "java", 2016, 2000]
list3 = [1, 2, 3]
var1 = max(list1)
var2 = max(list3)
print "list1 最大值:", var1
print "list3 最大值:", var2

以上示例运行结果

list1 长度: python
list3 长度: 3

注:List1 中的结果是按照 asc码表排列的,数字在大写字母前面,大写字母在小写字母前面,大家可以参照asc码表

  (4).返回列表最小值:min(list)

  这个和最大值原理相同,就不列举了。

4.2方法

序号 方法
1 list.append(obj)
在列表末尾添加新的对象
2 list.count(obj)
统计某个元素在列表中出现的次数
3 list.extend(seq)
在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
4 list.index(obj)
从列表中找出某个值第一个匹配项的索引位置
5 list.insert(index, obj)
将对象插入列表
6 list.pop(obj=list[-1])
移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
7 list.remove(obj)
移除列表中某个值的第一个匹配项
8 list.reverse()
反向列表中元素
9 list.sort([func])

remove,index,append 方法的练习:

示例5:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2016/9/11 10:10
# @Author  : wwyx
list1 = ["python", "java", 2016, 2000]
list2 = ["python", "java", 2016, 2000]
list3 = [1, 2, 3]
list1.remove("java")
list3.append(4)
print "list1 调用remove 方法:", list1
print "list3 调用append 方法:", list3
print "list3 根据索引查询:", list3.index(2)

示例5 运行结果:

list1 调用remove 方法: ['python', 2016, 2000]
list3 调用append 方法: [1, 2, 3, 4]
list3 根据索引查询: 1

好了,列表部分就到这里!

python之最强王者(6)——列表(List)的更多相关文章

  1. python之最强王者(9)——函数

    1.Python 函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但 ...

  2. python之最强王者(10)———文件(File)、输入输出的基本操作

    1. Python 文件I/O 本章只讲述所有基本的的I/O函数,更多函数请参考Python标准文档. 2.打印到屏幕 最简单的输出方法是用print语句,你可以给它传递零个或多个用逗号隔开的表达式. ...

  3. python之最强王者(8)——字典(dictionary)

    1.Python 字典(Dictionary) 字典是另一种可变容器模型,且可存储任意类型对象. 字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包 ...

  4. python之最强王者(7)——元组(tuple)

    1.序列(sequence): 说明:在前面的字符串列表中其实我们已经用到了序列,之所以放到这篇来讲主要是为了承上启下,方便理解和记忆. python的数据访问模型:直接存取 ,序列 ,映射 对非容器 ...

  5. python之最强王者(5)——Nunber(数字)

    1.Python Number(数字) Python Number 数据类型用于存储数值. 数据类型是不允许改变的,这就意味着如果改变 Number 数据类型的值,将重新分配内存空间. 以下实例在变量 ...

  6. python之最强王者(3)——变量,条件、循环语句

    1.Python 变量类型 变量存储在内存中的值.这就意味着在创建变量时会在内存中开辟一个空间. 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中. 因此,变量可以指定不同的 ...

  7. python之最强王者(1)——python入门简介

    1.Python简介 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言. Python由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年. 像Pe ...

  8. python之最强王者(11)——异常(exception)

    1.Python 异常处理 python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误.你可以使用该功能来调试python程序. 异常处理: 本站Python教程会具体介绍. ...

  9. python之最强王者(4)——字符串

    1.Python 中文编码 前面章节中我们已经学会了如何用 Python 输出 "Hello, World!",英文没有问题,但是如果你输出中文字符"你好,世界" ...

随机推荐

  1. nodejs操作arduino入门(javascript操作底层硬件)

    用Javascript来操作硬件早就不是一件稀奇的事情了. 所以作为一名电子专业出身的FE,我也打算尝试一下用js来驱动arduino: 要想操作这些底层硬件,肯定是需要一些工具的,我这里介绍的工具主 ...

  2. Android之解析XML

    1.XML:可扩展标记语言. 可扩展标记语言是一种很像超文本标记语言的标记语言. 它的设计宗旨是传输数据,而不是显示数据. 它的标记没有被预定义.需要自行定义标签. 它被设计为具有自我描述性. 是W3 ...

  3. gulp 自动添加版本号

    本文介绍利用 gulp-rev 和 gulp-rev-collector 进行版本管理 npm官网介绍使用后的效果如下: "/css/style.css" => " ...

  4. MySQL数据库罕见的BUG——Can't get hostname for your address

    在连接mysql jdbc时候,抛出了 com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Communicat ...

  5. javaMail

    JavaMail概述:        JavaMail是由Sun定义的一套收发电子邮件的API,不同的厂商可以提供自己的实现类.但它并没有包含在JDK中,而是作为JavaEE的一部分. javaMai ...

  6. Spring MVC重定向和转发以及异常处理

    SpringMVC核心技术---转发和重定向 当处理器对请求处理完毕后,向其他资源进行跳转时,有两种跳转方式:请求转发与重定向.而根据要跳转的资源类型,又可分为两类:跳转到页面与跳转到其他处理器.对于 ...

  7. 在Mac OS X上安装ASP.NET 5(译文)

    ASP.NET 5 运行在包括OS X的可用于多个平台的.NET Execution Environment(DNX)上.本文介绍如何在OS X上通过HomeBrew安装DNX和ASP.NET 5. ...

  8. ABP(现代ASP.NET样板开发框架)系列之1、ABP总体介绍

    点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之1.ABP总体介绍 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)” ...

  9. GDB 多线程调试:只停止断点的线程,其他线程任然执行; 或只运行某些线程 其他线程中断

    多线程调试之痛 调试器(如VS2008和老版GDB)往往只支持all-stop模式,调试多线程程序时,如果某个线程断在一个断点上,你的调试器会让整个程序freeze,直到你continue这个线程,程 ...

  10. 我们为什么使用Node

    引言:Node 已经迅速成为一个可行并且真正高效的web 开发平台.在Node 诞生之前,在服务端运行JavasScript 是件不可思议的事情,并且对其他的脚本语言来说,要实现非阻塞I/O 通常需要 ...