一、基本概念
1,列表是什么?
一种序列型数据类型,一有序数据集合用逗号间隔用方括号括起来。
2,几种访问形式
1)索引访问,语法结构:list_name[index]。注意,列表的索引值从0开始。例如:
>>> li=[1,2,3,4,5] >>> print li[2],li[0] 3 1
删除列表的项:
>>> del li[2] >>> print li [1, 2, 4, 5]
2)切片访问,语法结构:list_name[start_index,end_index,step]。例如:
>>> li=[1,2,3,4,5] >>> print li[2:4] [3, 4] >>> li=[1,2,3,4,5] >>> print li[2:4:2] [3]
删除列表项:
>>> del li[2:4] >>> print li [1, 2, 5]
3,基本运算
1)加法:将多个列表组合成一个新的更长的列表。
>>> li=[1,2,3,4,5] >>> li1=range(6,9) >>> li2=li+li1 >>> print li2 [1, 2, 3, 4, 5, 6, 7, 8]
2)乘法:相当于同一个列表相加了n次。
>>> print li1*2 [6, 7, 8, 6, 7, 8]
3)(not)in运算:即包含与否的运算,判断某个值是否为列表的元素。
>>> print 2 in li True >>> print 10 in li2 False >>> print 10 not in li2 True
4)遍历:逐一访问列表里的各个元素通过for循环来依次取出列表的各个元素项的值。
>>> li1=[1,2,3,4,5] >>> li=li1*3 >>> i=0 >>> for val in li: print 'li[%d]'%(i),val i+=1 (空格,Enter键运行) li[0] 1 li[1] 2 li[2] 3 li[3] 4 li[4] 5 li[5] 1 li[6] 2 li[7] 3 li[8] 4 li[9] 5 li[10] 1 li[11] 2 li[12] 3 li[13] 4 li[14] 5
列表的解析:[val_expr for val in list_name],其中:
val_expr:是变量val的运算表达式,val用于存储for每次从list_name列表取出的元素的值,用每一个val_expr的值作为构建新列表的元素项。
练习:用列表求1~9的立方。
>>> li=range(1,10) >>> print li [1, 2, 3, 4, 5, 6, 7, 8, 9] >>> li1=[x**3 for x in li] #列表的解析 >>> print li1 [1, 8, 27, 64, 125, 216, 343, 512, 729]
二、相关函数
列表的相关函数很多,可以通过help函数查看。现在选取几个比较重要的函数举例,加以理解。
1)len()函数:是Python内建函数不属于任何数据类型,一般序列型的数据都可以通过它来测得其长度。
>>> li=range(1,11) >>> print li [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> print len(li) 10
2)count()函数:统计列表里某元素项出现的次数。
>>> li=range(1,3) >>> li2=li*3 >>> print li2 [1, 2, 1, 2, 1, 2] >>> print li2.count(li2[2]) 3 >>> print li2.count('a') 0
3)insert函数:将对象添加到列表指定位置,列表里的元素顺序后移。
>>> li=[] >>> li=range(1,11) >>> print li [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> li.insert(5,10) >>> print li [1, 2, 3, 4, 5, 10, 6, 7, 8, 9, 10] >>> li.insert(6,li1) >>> li [1, 2, 3, 4, [5, 6, 7, 8, 9], [5, 6, 7, 8, 9]]
4)append函数:将对象添加到列表尾部位置。
例一:插入对象为列表里单个元素。
>>> li=[] >>> li1=range(1,5) >>> for x in li1: li.append(x) >>> print li [1, 2, 3, 4]
例二:插入对象为列表。
>>> li=[] >>> li1=range(1,5) >>> for x in li1: li.append(x) >>> print li [1, 2, 3, 4] >>> li1=range(5,10) >>> li.append(li1) >>> print li [1, 2, 3, 4, [5, 6, 7, 8, 9]]
5)extend函数:将一个列表是所有元素以个体的方式添加到列表的尾部。
>>> li1=range(1,6) >>> li2=range(6,10) >>> print li1,'\n',li2 [1, 2, 3, 4, 5] [6, 7, 8, 9] >>> li1.extend(li2) >>> li1 [1, 2, 3, 4, 5, 6, 7, 8, 9]
6)remove函数:删除列表的第一次出现的指定元素。
>>> li=range(1,4)*3 >>> print 'li',li li [1, 2, 3, 1, 2, 3, 1, 2, 3] >>> print 'li=',li li= [1, 2, 3, 1, 2, 3, 1, 2, 3] >>> li.remove(2) >>> print 'li=',li li= [1, 3, 1, 2, 3, 1, 2, 3]
7)pop函数:删除列表指定位置的元素或者列表的尾部元素。
>>> li=range(1,4)*3 >>> print 'li=',li li= [1, 3, 1, 2, 3, 1, 2, 3] >>> li.pop() 3 >>> li [1, 3, 1, 2, 3, 1, 2] >>> li.pop(3) 2 >>> li [1, 3, 1, 3, 1, 2]
练习:
1、用函数实现剔除表里重复的元素
i)remove函数实现:
>>> li='www.baidu.com'*10 >>> li=list(li) >>> li.sort() >>> i=0 >>> for s in li: while li.count(s)>1: li.remove(s) i+=1 >>> print li ['.', 'a', 'b', 'c', 'd', 'i', 'm', 'o', 'u', 'w']
ii)pop函数实现:
li=[1,1,1,2,2,2,3,3,3,3,4] length=len(li) print li pos=length-1 while pos>=0: r=li.count(li[pos]) if r>1: i=0 while i<r-1: li.pop(pos) pos=pos-1 i=i+1 else: print 'Over!' pos-=1 print li
iii)extend函数和append函数实现(有兴趣的同学可以尝试尝试)
2、去除二维列表[],二维变一维。
i)嵌套循环实现:isinstance函数可以判定数据的类型。
li=[1,2,4,range(1,4),5,range(1,4),6] print li k=0 for li1 in li: if isinstance(li1,list): j=0 for li2 in li1: li.insert(k+j,li2) li.remove j=j+1 del li[k+j] k=k+1 print li
ii)单循环实现:
li=[1,2,4,range(1,4),5,range(1,4),6] print li b=[] for i in li: if isinstance(i,list): b.extend(i) else: b.append(i) print(b)
三、元组(Tuple)
元组的结构,访问,使用方法和列表基本一致,区别有二:
i)使用圆括号()将各个数据项括起来;
i)元组的元素值不可修改。
实例:
>>> t=tuple(range(1,10)) >>> print t (1, 2, 3, 4, 5, 6, 7, 8, 9) >>> print t[3] 4 >>> print t[2:8] (3, 4, 5, 6, 7, 8)
四,小结
本文介绍了Python的列表的基本概念,相关函数及其用法举例,还初步介绍了元组知识,通过练习,应该对Python的列表知识有一个初步的认识。