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. Kooboo CMS技术文档之四:Kooboo CMS的站点组成部分

    Kooboo CMS本着功能独立分离的原则,将站点分为三部分组成:用户管理,站点管理和内容数据库管理.各个功能之间既可独立使用,也可以容易组成在一起形成一个完整的系统. 用户管理 管理整个系统内的用户 ...

  2. MongoDB集群配置

    本文演示:(一个主服务器,一个备份服务器,三个仲裁服务器) 官方推荐副本集的成员数量为奇数,最多12个副本集节点,最多7个节点参与选举. 本文演示基于本机,用端口区分服务(每个服务器下新建db文件夹用 ...

  3. 浅谈Web自适应

    前言 随着移动设备的普及,移动web在前端工程师们的工作中占有越来越重要的位置.移动设备更新速度频繁,手机厂商繁多,导致的问题是每一台机器的屏幕宽度和分辨率不一样.这给我们在编写前端界面时增加了困难, ...

  4. iOS之ProtocolBuffer搭建和示例demo

    这次搭建iOS的ProtocolBuffer编译器和把*.proto源文件编译成*.pbobjc.h 和 *.pbobjc.m文件时,碰到不少问题! 搭建pb编译器到时没有什么问题,只是在把*.pro ...

  5. centos安装nodejs

    1.下载安装nodejs wget http://nodejs.org/dist/v0.10.25/node-v0.10.25.tar.gz compat--c++ tar -xf node-v0.1 ...

  6. github中的watch、star、fork的作用

    [转自:http://www.jianshu.com/p/6c366b53ea41] 在每个 github 项目的右上角,都有三个按钮,分别是 watch.star.fork,但是有些刚开始使用 gi ...

  7. 微信小程序开发初探

    一.关于微信小程序 1.1 小程序诞生的背景 张小龙说道: (1)一切以用户价值为依归→用户是微信的核心,所以微信中没有很多与客户无关的功能,比如QQ中的乱七八糟一系列东西. (2)让创造发挥价值→所 ...

  8. 基于 SailingEase WinForm Framework 开发客户端程序(3:实现菜单/工具栏按钮的解耦及状态控制)

    本系列文章将详细阐述客户端应用程序的设计理念,实现方法. 本系列文章以  SailingEase WinForm Framework 为基础进行设计并实现,但其中的设计理念及方法,亦适用于任何类型的客 ...

  9. 周六搞事情,微信小程序开发文档已放出!

    程序员们,你们有事干了! 个人感觉不管是什么形式的UI技术,都无法决定一个产品的生死,核心还是服务和模式的创新. 某些方面和ApiCloud好像,但发展前景远远胜过ApiCloud. 微信小程序可以为 ...

  10. Android开发学习之路-LeakCanary使用

    LeakCanary是一个内存泄漏检测库,它可以在我们的应用发生内存泄漏的时候发出提醒,提醒包括通知和Log.GitHub 这个库使用起来比较简单: ①添加依赖: dependencies { deb ...