现在我们要学习一些Python的数据结构了,本节将主要学习列表(list)的用法


1.list的方法


list.append(x) 在list的末尾添加一个元素

>>> a=[1,2,3,4]
>>> a.append('a')
>>> a
[1, 2, 3, 4, 'a']

list.extend(L) 在list的末尾添加列表L的所有元素

>>> a=[1,2,3,4]
>>> L=['a','b','c']
>>> a.extend(L)
>>> a
[1, 2, 3, 4, 'a', 'b', 'c']

list.pop([i]) 删除list索引为i-1的元素,并且返回删除的元素,如果i未指定,则删除列表最后一个元素

>>> a=[1,2,3,4]
>>> a.pop()

>>> a
[1, 2, 3]

>>> b=[1,2,3,4]
>>> b.pop(2)

>>> b
[1, 2, 4]

list.remove(x) 删除list中值为x的元素,如果list中找不到该元素,则会引发一个错误

>>> a=['a','b','c','d']
>>> a.remove('b')
>>> a
['a', 'c', 'd']
>>> a.remove(9)

Traceback (most recent call last):
File "<pyshell#24>", line 1, in <module>
a.remove(9)
ValueError: list.remove(x): x not in list

list.index(x) 返回list中值为x的元素索引,如果list中找不到该元素,则会引发一个错误

>>> a=['a','b','c','d']
>>> a.index('c')

>>> a.index(2)

Traceback (most recent call last):
File "<pyshell#27>", line 1, in <module>
a.index(2)
ValueError: 2 is not in list

list.count(x) 统计并返回list中值为x的元素个数

>>> a=[1,2,3,1,2,3,1]
>>> a.count(1)

>>> a.count(3)

>>> a.count('a')

list.insert(i,x) 在索引位置i处插入一个元素x,当i大于列表的个数,将在列表的末尾插入元素x

>>> a=[1,2,3,4,5,6]
>>> a.insert(2,'a')
>>> a
[1, 2, 'a', 3, 4, 5, 6]

>>>a.insert(10,'a')
>>> a
[1, 2, 'a', 3, 4, 5, 6, 'a']

list.sort(cmp=Nonekey=Nonereverse=False) 对list进行重新排序,默认是按从小到大的顺序排序(参数是可选的,我们将在之后学习参数的用法)

>>> a=[2,1,3,0,7,6,8]
>>> a.sort()
>>> a
[0, 1, 2, 3, 6, 7, 8]

list.reverse() 对list进行反向

>>> a=[2,3,4,1,2,0]

>>> a.reverse()
>>> a
[0, 2, 1, 4, 3, 2]


2.list 切片


引用列表的元素可以使用索引,每个列表的索引从左到右(正向)是从0开始,从右到左(反向)是从-1开始。例如,a=[1,2,3,4,5,6] a的正向和反向索引如下图所示:

a[0]=1

a[-1]=6

a[-6]=1

a[1]=2

list 可以通过list[x:y]的形式来获取列表list从索引x到y(不包含y)的子集。

>>> a=[1,2,3,4,5,6]
>>> a[0:2]
[1, 2]
>>> a[:]
[1, 2, 3, 4, 5, 6]
>>> a[0:]
[1, 2, 3, 4, 5, 6]
>>> a[:3]
[1, 2, 3]
>>> a[-1:-4]
[]

如果a[x:y]索引y处的元素在索引x处元素的左边,那么将返回一个空列表,如:a[4:-6]=[]

>>> a=[1,2,3,4,5,6]

>>> a[4:-6]
[]
>>> a[5:3]
[]

字符串也可以当成一个特殊的列表,如:str=‘python’,我们也可以用切片来截取子字符串:str[2:4]='th'

>>> str='python'
>>> str[2:4]
'th'

注:针对字符串,我们还可以使用加法来为切片获取的子字符串,增加另一个子字符串

>>> str='python'
>>> 'py'+str[2:4]+'on'
'python'
>>> str[:]+'is good'
'pythonis good'


3.嵌套列表


有时候列表的元素也可能是一个列表,这样就构成了嵌套列表,假如,a=[[1,2,3,4],1,2,3,4] ,a列表的第3个元素是一个子列表

我们可以通过list[x][y]来获取子列表中的元素:

>>> a=[1,2,['a','b','c','d'],3,4]
>>> a[2][2]
'c'
>>> a[2][-1]
'd'


4. x for x in list 语句的用法


我们有时候可能需要遍历列表的元素,那么我们可以利用for x in list的形式来实现:

>>> a=[1,2,3,4,5]
>>> for x in a:
print x

我们有时可能想要对列表的每个元素进行处理,例如,我们想对列表的每个元素都加1:

>>> a=[1,2,3,4,5]
>>> [x+1 for x in a]
[2, 3, 4, 5, 6]

如果我们的列表包含了嵌套列表,我们也可以使用这个语句,例如:a=[[1,2,3],[4,5,6],[7,8,9]] ,我们想使子列表中的每个元素都加1:

>>> a=[[1,2,3],[4,5,6],[7,8,9]]
>>> [[sublist[i]+1 for i in range(3) ] for sublist in a]
[[2, 3, 4], [5, 6, 7], [8, 9, 10]]
>>>

假如我们想像二维数组那样倒置数组,即,我想将 a=[[1,2,3],[4,5,6],[7,8,9]]  变成[[1,4,7],[2,5,8],[3,6,9]],我们可以这样做:

>>> a=[[1,2,3],[4,5,6],[7,8,9]]
>>> [[ sublist[i] for sublist in a] for i in range(3)]
[[1, 4, 7], [2, 5, 8], [3, 6, 9]]

上面的代码我们还可以用下面的代码替换:

>>> x=[[],[],[]]
>>> a=[[1,2,3],[4,5,6],[7,8,9]]
>>> for i in range(3):
                  for sublist in a:
                          x[i].append(sublist[i])

>>> x
[[1, 4, 7], [2, 5, 8], [3, 6, 9]]

将列表中所有大于2的元素+1,如把[[1,2,3],[4,5,6]]变成[[4], [5, 6, 7]]

list2=[[1,2,3],[4,5,6]]
print [[sublist[i]+1 for i in range(3) if sublist[i]>2] for sublist in list2 ]

  

[[4], [5, 6, 7]](Python)list的方法的更多相关文章

  1. Python测试函数的方法之一

    Python测试函数的方法之一 首先介绍简单的try......except尝试运行的放例如下面的图和代码来简单介绍下: 注释:提醒以下代码环境为2.7.x 请3.x以上的同学们老规矩print(把打 ...

  2. 使用python原生的方法实现发送email

    使用python原生的方法实现发送email import smtplib from email.mime.text import MIMEText from email.mime.multipart ...

  3. Python中sorted()方法

    Python中sorted()方法的用法 1.先说一下iterable,中文意思是迭代器. Python的帮助文档中对iterable的解释是:iteralbe指的是能够一次返回它的一个成员的对象.i ...

  4. python类及其方法

    python类及其方法 一.介绍 在 Python 中,面向对象编程主要有两个主题,就是类和类实例类与实例:类与实例相互关联着:类是对象的定义,而实例是"真正的实物",它存放了类中 ...

  5. Python内置方法的时间复杂度(转)

    原文:http://www.orangecube.net/python-time-complexity 本文翻译自Python Wiki本文基于GPL v2协议,转载请保留此协议. 本页面涵盖了Pyt ...

  6. Python LOGGING使用方法

    Python LOGGING使用方法 1. 简介 使用场景 场景 适合使用的方法 在终端输出程序或脚本的使用方法 print 报告一个事件的发生(例如状态的修改) logging.info()或log ...

  7. [Python]读写文件方法

    http://www.cnblogs.com/lovebread/archive/2009/12/24/1631108.html [Python]读写文件方法 http://www.cnblogs.c ...

  8. 转最简便安装python+selenium-webdriver环境方法

    最简便安装python+selenium-webdriver环境方法 from:http://www.easonhan.info/python/2013/12/07/active-python-ins ...

  9. python字符串replace()方法

    python字符串replace()方法 >>> help(str.replace)Help on method_descriptor:replace(...)    S.repla ...

  10. Python中__init__方法介绍

    本文介绍Python中__init__方法的意义.         __init__方法在类的一个对象被建立时,马上运行.这个方法可以用来对你的对象做一些你希望的 初始化 .注意,这个名称的开始和结尾 ...

随机推荐

  1. webpack +vue开发(2)

    我们的loader方式其实可以写成inline的方式 loaders:[ { test:/\.js$/, loader:"babel", exclude:/node_modules ...

  2. 关于http协议详解

    Author :Jeffrey 引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前 ...

  3. java内存溢出分析(二)

    我们继续java内存溢出分析(一)的分析,点击Details>按钮,显示如下图,我们发现有一个对象数量达到280370216个,再点击其中的List objects 点击后,显示下图 至此,我们 ...

  4. 高并发分布式系统中生成全局唯一Id汇总

    数据在分片时,典型的是分库分表,就有一个全局ID生成的问题.单纯的生成全局ID并不是什么难题,但是生成的ID通常要满足分片的一些要求:   1 不能有单点故障.   2 以时间为序,或者ID里包含时间 ...

  5. Bootstrap for MVC:Html.Bootstrap().TextBoxFor(model=>model.Name)

    在上篇博文中提到最近比较忙,也打过招呼Orchard系列文章更新速度可能会放缓,但还是会继续写下去,主要原因在最近想着开发一个新的东西(系统?组件?),等有一定成果时会跟大家分享一些相关的东西,今天介 ...

  6. git初始化

    git init:初始化 git status:查看当前目录下文件状态 git add -A(表示添加当前目录下所有文件)/文件名(表示只添加该一个文件) git commit -m '':提交到本地 ...

  7. IIS+php+mysql 环境搭建

    1.安装IIS,并安装CGI角色: 2.安装php manager IIS扩展: 3.安装php: 4.配置php manager, 添加php php-cgi.exe执行路径 : 5.下载mysql ...

  8. Aquarium Cycling

    http://www.fishyou.com/aquarium-cycling.php Aquarium Cycling Aquarium cycling actually refers to the ...

  9. SQL注入原理

    随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多.但是由于这个行业的入门门槛不高,程序员的水平及经验也参差不齐,相当大一 部分程序员在编写代码的时候,没有对用户输入数据的合法性 ...

  10. arcgis engine 基础代码

    1.开始编辑,save feature property,停止编辑 IWorkspace workspace = ((IDataset)pFeatureClass).Workspace;IWorksp ...