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. javascript动画系列第四篇——拖拽改变元素大小

    × 目录 [1]原理简介 [2]范围圈定 [3]大小改变[4]代码优化 前面的话 拖拽可以让元素移动,也可以改变元素大小.本文将详细介绍拖拽改变元素大小的效果实现 原理简介 拖拽让元素移动,是改变定位 ...

  2. WebSocket - ( 一.概述 )

    说到 WebSocket,不得不提 HTML5,作为近年来Web技术领域最大的改进与变化,包含CSS3.离线与存储.多媒体.连接性( Connectivity )等一系列领域,而即将介绍的 WebSo ...

  3. Git分布式版本控制教程

    Git分布式版本控制Git 安装配置Linux&Unix平台 Debian/Ubuntu $ apt-get install git Fedora $ ) $ dnf and later) G ...

  4. 微信公众号开发(一)--验证服务器地址的Java实现

    现在主流上都用php写微信公众号后台,其实作为后端语言之一的java也可以实现. 这篇文章将对验证服务器地址这一步做出实现. 参考资料:1.慕课网-<初识java微信公众号开发>,2.微信 ...

  5. 跟着老男孩教育学Python开发【第五篇】:模块

    递归的案例:阶乘 1*2*3*4*5*6*7- def func(num):     if num == 1:         return 1     return num * func(num - ...

  6. 【python之路4】循环语句之while

    1.while 循环语句 #!/usr/bin/env python # -*- coding:utf-8 -*- import time bol = True while bol: print '1 ...

  7. PHP 数组浅析

    PHP的数组具有如下特点:1.数组初始化时无需指定长度:2.数组中的元素无需相同类型:3.数组的长度可变4.可使用var_dump(参数)或者print_r(  参数) 函数查看数组变量.5.数组内的 ...

  8. [PHP源码阅读]array_pop和array_shift函数

    上篇文章介绍了PHP添加元素到数组的函数,那么当然有从数组中删除元素.array_pop和array_shift只从数组的头或尾删除一个元素.经过阅读源码,发现这两个函数的实现都是调用了同一个函数-- ...

  9. SVG:textPath深入理解

    SVG的文本可以沿着一条自定义的Path来排布,比如曲线.圆形等等,使用方式如下所示(来源MDN): <svg viewBox="0 0 1000 300" xmlns=&q ...

  10. 【Java并发编程实战】----- AQS(三):阻塞、唤醒:LockSupport

    在上篇博客([Java并发编程实战]----- AQS(二):获取锁.释放锁)中提到,当一个线程加入到CLH队列中时,如果不是头节点是需要判断该节点是否需要挂起:在释放锁后,需要唤醒该线程的继任节点 ...