现在我们要学习一些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. 自制公众平台Web Api(微信)

    最近一段时间感觉没什么东西可以分享给大家,又由于手上项目比较赶,不太更新博客了,今天趁着生病闲下来的时间分享一些项目中的东西给大家. 公众平台 提起公众平台当下最流行的莫过于腾讯的微信了,当然还有易信 ...

  2. 16.检查是否为BST

    题目描述 请实现一个函数,检查一棵二叉树是否为二叉查找树. 给定树的根结点指针TreeNode* root,请返回一个bool,代表该树是否为二叉查找树 import java.util.*; /* ...

  3. FMDBsqilte语句样式

    举例: @"create table student(stuid integer primary key autoincrement,name text,number integer,the ...

  4. leetcode 137

    137. Single Number II Given an array of integers, every element appears three times except for one. ...

  5. PYTHON入门知识

    基本数据类型 注:查看对象相关成员 var,type,dir 一.整数 如: 18.73.84 每一个整数都具备如下功能: class int(object): """ ...

  6. EMR,电子病历(Electronic Medical Record)

    电子病历 电子病历(EMR,Electronic Medical Record),也叫计算机化的病案系统或称基于计算机的病人记录(CPR,Computer-Based Patient Record). ...

  7. COM符合名字对象建议使用的分隔符

  8. objective c, protocol

    OC中协议类似于java中的接口,在多个类具有类似的方法时可以将这些方法定义到protocol中,然后各个类分别实现protocol中的各个方法. 例:有两个类Square和Circle, 定义一个p ...

  9. HDOJ(1242)BFS+优先队列

    Rescue http://acm.hdu.edu.cn/showproblem.php?pid=1242 题意:"#"是墙,"."是路,"a&quo ...

  10. linux C学习笔记03--单链表

    单链表一直是程序员的基础,我也来复习下,下面是link.c中的代码,供main.c 调用,代码很简单,单链表的插入,删除,查找和遍历输出, #include <stdio.h> #incl ...