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. 每天一个设计模式-7 生成器模式(Builder)

    每天一个设计模式-7 生成器模式(Builder) 一.实际问题 在讨论工厂方法模式的时候,提到了一个导出数据的应用框架,但是并没有涉及到导出数据的具体实现,这次通过生成器模式来简单实现导出成文本,X ...

  2. arcgis api for js入门开发系列六地图分屏对比(含源代码)

    上一篇实现了demo的地图标绘模块,本篇新增地图地图分屏对比模块,截图如下(源代码见文章底部): 对效果图的简单介绍一下,在demo只采用了两分屏对比,感兴趣的话,可以在两分屏的基础上拓展,修改css ...

  3. RMS:不能对生产服务器使用测试清单

    问题说明:在使用office软件RMS加密时报:不能对生产服务器使用测试清单,或者使用 rmsbulk.exe进行RMS加密时,报不能连接到RMS服务器. 解决办法: 请到https://suppor ...

  4. Asp.NET + SQLServer 部署注意事项

    1. 内存设置最大值(如果不设置, 会造成内存占用太大,带来性能问题) IIS 设置最大内存 sqlserver 设置最大内存

  5. .net的简易多线程处理

    这篇文章是对几年前写的<Task及其异常处理的若干事项>的一些狗尾续貂的补充. 更简单的写法 几年前写的那篇文章很详细地描述了.net用Task对线程进行封装的相关技术.开一个新的线程去执 ...

  6. .NET里简易实现IoC

    .NET里简易实现IoC 前言 在前面的篇幅中对依赖倒置原则和IoC框架的使用只是做了个简单的介绍,并没有很详细的去演示,可能有的朋友还是区分不了依赖倒置.依赖注入.控制反转这几个名词,或许知道的也只 ...

  7. C++ std::queue

    std::queue template <class T, class Container = deque<T> > class queue; FIFO queue queue ...

  8. 错误: 从内部类中访问本 地变量vvv; 需要被声明为最终类型

    从github 下载了源码, 进行编译, 出现了下面的错误 E:\downloads\ff\elasticsearch-master\elasticsearch-master>GRADLE :b ...

  9. Underscore.js

    概述 Underscore.js是一个很精干的库,压缩后只有4KB.它提供了几十种函数式编程的方法,弥补了标准库的不足,大大方便了JavaScript的编程.MVC框架Backbone.js就将这个库 ...

  10. OpenCASCADE Data Exchange - 3D PDF

    OpenCASCADE Data Exchange - 3D PDF eryar@163.com Abstract. Today most 3D engineering model data are ...