列表 list
- 概念
- 运用方法
- (一)创建链表
- (二)访问链表
- (三)修改链表
概念
任意对象的有序集合。列表是一组任意类型的值,按照一定顺序组合而成的。组成列表的值叫做元素(Elements)。每一个元素被标识一个索引,第一个索引是0,序列的功能都能实现。
特点:可重复,类型可不同。
运用方法
(一)创建链表
1.基本语法 [ ] 创建
2.list()创建———将任何可迭代的数据转化成列表
3.range()创建——创建整数列表,list(range([start,] ,[,step],end))
listname=['a',1,2,'boy',"girl"] #链表用 [] 表示
list(range(10))
list(range(0,20,2))
(二)访问链表
1、索引
通过索引可直接访问列表元素,当超出列表范围时,python会报错
print listname[0]#索引从0开始
print listname[-1] #listname[-1]代表列表最后一个元素
#即使不知道列表长度,也可使用-1获取最后一个元素,-2获取倒数第二个元素,以此类推
2、切片
切片 slice
listname[start :end] #截取的元素包括开始的,不包括最后的
listname[:] #提取整个列表
listname[:-1] #排除最后一个元素
listname[-3:] #倒数三个
listname[-5:-3] #包头不包尾
listname[1:5:2] #带有步长的切片,[1,5)隔二取一
listname[::-1] #步长为负,从右到左,反向提取
(三)修改链表
1、增
1.+运算符操作(创建新的列表对象,不是真正的尾部追加)————列表+[数据] 或列表1+列表2
2.在指定位置插入————列表.insert(索引,数据)
3.在列表末尾追加数据(原地修改列表对象)————列表.append(数据)
4.扩展列表(将列表2中的完整数据追加到列表1末尾,属原地操作)————列表.extend(列表2)
print listname+["妈妈"] #将原列表的元素和新列表的元素依次
复制到新的列表对象中。这样,会涉及大量的复制操作,对于操作大量元素不建议使用。
listname.insert(1,"姐姐")
listname.append("妹妹")
listname2=["妹妹","哥哥","爸爸"]
listname1.extend(listname2)
listname.extend([7,8]) #extend 接受一个参数,这个参数总是一个 list,并且把这个 list 中的每个元素添加到原 list 中。
2、删
1.删除指定索引数据(从内存中删除)————del 列表[索引]
2.删除第一个出现的指定数据(已知要删除元素的值)————列表.remove(数据)
3.删除末尾数据,并返回该删除的值————列表.pop()
4.删除指定索引数据,并返回该删除的值————列表.pop(索引)
5.清空列表————列表.clear
listname=["aa","bb","cc","dd"]
del listname[1]
del listname #从内存中删除整个列表,python提示错误
listname.remove("bb")
listname.pop()
listname.pop(2)
listname.clear #print listname结果为[]
3、查
1.获取数据在列表中首次出现的位置(已知数据内容,想确定数据位置)————列表.index(数据)
2.获取数据在指定范围内首次出现的位置————列表.index(数据,[start],[end])
3.查看数据在列表中出现的次数(可进行成员资格判断,return值大于0,则表示指定元素存在)————列表.count(数据)
4.判断元素是否在列表中————数据 in 列表
5.获取列表长度————len(列表)
6.获悉类型————type(列表)
7.查看官方内置函数————dir(list)与help(list) 命令
listname.index('a')
listname.index('a',1,4)
listname.count('a')
print 100 in listname #返回值为Ture 或False
len(listname)
type(listname) #返回class 'list'
help(list)
dir(list)
4、改
1.通过索引,重新赋值————列表[索引]=数据
2.切片赋值————列表[起始索引:结束索引]=[数据1,数据2]
listname[0]='a'
listname[1]=2020
listname[:2]=['a','b']
5、排
1.升序排序(修改原列表,不建立新列表)————列表.sort()
2.降序排序————列表.sort(reverse=Ture)或列表.sort(reverse=非零数字)
3.反转逆序————列表.reverse()
4.升序排序(内置函数建立新列表,不对原列表做修改)————sorted(列表)
5.逆序排列(内置函数不对原列表做任何修改,只是返回一个 :只能使用一次逆序排列的迭代器对象。)————reserved(列表)
6.打乱原有顺序————random.shuffle(列表)
listname.sort()
listname.sort(reverse=Ture)
listname.sort(reverse=2)
listname.reverse()
sorted(listname)
reversed(listname)
import random
random.shuffle(listname)
6、遍历
for x in listname #for循环遍历
7、嵌套列表
listname=[1,2,'a',[3,'b']] #创建
listname[0][1] #索引,类似于二维数组
listname[:][:-1] #切片
8、其他
min(listname) #取列表最小值
max(listname) #取列表最大值,只能用于数据为同类型的列表
sum(listname) #求和
listname*2 #重复
listname.copy() #复制