一、列表
列表也通常被称为list 数组 array
1、列表定义
使用方括号([])即可
alist = [123,'abc','def',666,True]
空列表的定义:alist = [] 或 alist = list()
列表它的位置,或索引,第一个索引是0,第二个索引是1,依此类推
2、列表函数
1)len()方法:返回列表中元素个数
实例:
>>> alist = ['a','b','c','d']
>>> len(alist)
4
2)max()方法:返回列表元素的最大值
实例:
>>> alist = ['a','b','c','d']
>>> max(alist)
'd'
3)min()方法:返回列表元素中的最小值。
实例:
>>> alist = ['a','b','c','d']
>>> min(alist)
'a'
4)list()方法:用于将元组转换为列表。
实例:
>>> aTuple = (1,'sa',56,'ccc')
>>> list(aTuple)
[1, 'sa', 56, 'ccc']
3、列表切片
Python中符合序列的有序序列都支持切片(slice),例如列表,字符串,元组。
格式:【start:end:step】
start:起始位置
end:结束位置
step:间距
举例:
l = ['a','b','c','d','e','f','g','h','i','j']
print(l[0:4]) #切片取值,不包含最后一个下标元素(顾头不顾尾)
print(l[:5]) #最前面开始取,可以省略,代表从0开始取
print(l[4:]) #如果冒号后面不写,代表取到最后
print(l[:8:2]) #步长,也就是代表隔几个取一次
l[::-1]可以反转列表,就是个固定用法,理解不了就背下来
l=['python', 'Love', 'Im']
print(l[::-1]) #反向输出
4、列表的增删改查与排序
1)增(append,insert,extend)
A、append() 方法:用于在列表末尾追加新的对象,只能添加一个元素。
实例:
>>> alist = [123,'abc','def',666]
>>> alist.append('ccc')
>>> print('更新后的列表:',alist)
更新后的列表: [123, 'abc', 'def', 666, 'ccc']
B、insert() 方法:将指定对象插入到列表中的指定位置,只能插入一个元素。
实例:
>>> alist.insert(0,'start')
>>> print(alist)
['start', 123, 'abc', 'def', 666, 'ccc']
C、extend() 方法:通过在列表末尾追加可迭代对象中的元素来扩展列表。
实例:
list1 = [1,2,3,4,5]
list2 = ['a','b','c']
list1.extend(list2)
print('扩展后的list1:',list1)
输出:
扩展后的list1 [1, 2, 3, 4, 5, 'a', 'b', 'c']
2)删
A、列表中pop()方法:通过指定元素的索引值来移除列表中的某个元素(默认是最后一个元素),并且返回该元素的值,如果列表为空或者索引值超出范围会报一个异常。
实例:
>>> alist = ['start', 123, 'abc', 'def', 666, 'ccc']
...
>>> alist.pop() #不填索引值,默认删除后最后一个元素
'ccc' #返回值
>>> print('默认删除后最后一个元素:',alist)
默认删除后最后一个元素: ['start', 123, 'abc', 'def', 666]
>>> alist.pop(2)
'abc'
>>> print('删除后指定元素后的列表:',alist)
删除后指定元素后的列表: ['start', 123, 'def', 666]
B 、列表 remove() 方法:通过指定元素的值来移除列表中某个元素的第一个匹配项,如果这个元素不在列表中会报一个异常。
实例:
>>> alist = ['start', 123, 'abc', 'def', 666, 'ccc']
>>> alist.remove('abc')
>>> print(alist)
['start', 123, 'def', 666, 'ccc'] #删除了元素‘abc’
注意:remove()只删除一个指定的值。如果要删除的值可能在列表中出现多次,就需要使用循环来判断是否删除了所有的值。
C、del语句 :删除指定位置的元素
实例:
>>> alist = ['start', 123, 'abc', 'def', 666, 'ccc']
>>> del alist[0] #删除第一个元素
>>> print(alist)
[123, 'abc', 'def', 666, 'ccc']
D、clear: 清空列表中的内容
>>> print(alist)
['start', '大山', 'abc', 'def', 666, 'ccc']
>>> alist.clear()
>>> alist
[]
3)改
修改元素的时候,通过下标来确定要修改的是哪个元素,然后进行修改
实例:
>>> alist = ['start', 123, 'abc', 'def', 666, 'ccc']
>>> alist[1] = '大山'
>>> print(alist)
['start', '大山', 'abc', 'def', 666, 'ccc']
4)查(in,not in,count,index)
A、查找列表中的某个元素
实例:
>>> alist = ['start', 123, 'abc', 'def', 666, 'ccc']
>>> print(alist[0]) #获取第一个元素
start
>>> print(alist[-1]) #获取最后一个元素
ccc
B、in 操作符:判断值是否在列表中,并返回true或false
实例:
>>> alist = ['start', 123, 'abc', 'def', 666, 'ccc']
>>> 'start' in alist
True
C、not in 操作符:判断是否不在列表,并返回True或False
实例:
>>> alist = ['start', 123, 'abc', 'def', 666, 'ccc']
>>> 122343 not in alist
True
D、count方法:统计指定值在列表中出现的次数,返回指定值在列表这个能出现的次数
实例:
>>> alist = ['start', 123, 'abc', 'def', 666, 'ccc',123]
>>> alist.count(123)
2
E、index方法:用于从列表中找出某个对象第一个匹配项的索引位置,如果这个对象不在列表中会报一个异常。
语法:L.index(obj[,start
=0[,stop=len(L)]])
参数:
obj -- 查找的对象。
start -- 可选参数,开始索引,默认为0。(可单独指定)
stop -- 可选参数,结束索引,默认为列表的长度。(不能单独指定)
实例1:
>>> alist = ['start', 123, 'abc', 'def', 666, 'ccc',123]
>>> alist.index('abc')
2
实例2:
>>> alist = ['start', 123, 'abc', 'def', 666, 'ccc',123]
>>> alist.index(123,5) #从索引5开始查找对象123,找到的索引值为6
6
实例3:
>>> alist2 = [4,6,72,1,2,4,7,3]
>>> alist2.index(4,5,len(alist2)) #最后一个参数就是列表长度,不能改
5
>>> alist2.index(4,5,)
5
>>> alist2.index(4,5,7)
5
5)列表排序(sort,reverse)
A、sort() 方法:对列表进行排序,排序的元素类型需要一致
sort() 方法语法:
list.sort(cmp=None,key=None,reverse=False)
参数:
- cmp -- 可选参数, 如果指定了该参数会使用该参数的方法进行排序。
- key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
- reverse -- 排序规则,reverse = True 降序, reverse = False 升序(默认)。
以下实例,默认sort排序为升序:
实例1:
>>> alist = ['beijing','tianjin','xiamen','shanghai','hunan']
>>> alist.sort()
>>> print(alist)
['beijing', 'hunan', 'shanghai', 'tianjin', 'xiamen']
实例2:
>>> alist2 = [4,6,72,1,2,4,7,3]
>>> alist2.sort()
>>> print(alist2)
[1, 2, 3, 4, 4, 6, 7, 72]
以下实例,降序输出列表:
>>> alist2 = [4,6,72,1,2,4,7,3]
>>> alist2.sort(reverse=True)
>>> print(alist2)
[72, 7, 6, 4, 4, 3, 2, 1]
关于cmp、key参数以后再补充。
sorted(iterable[, cmp[, key[, reverse]]]) iterable.sort(cmp[, key[, reverse]])
参数解释:
(1)iterable指定要排序的list或者iterable,不用多说;
(2)cmp为函数,指定排序时进行比较的函数,可以指定一个函数或者lambda函数,如:
students为类对象的list,没个成员有三个域,用sorted进行比较时可以自己定cmp函数,例如这里要通过比较第三个数据成员来排序,代码可以这样写:
1
2
|
students = [( 'john' , 'A' , 15 ), ( 'jane' , 'B' , 12 ), ( 'dave' , 'B' , 10 )]
sorted (students, key = lambda student : student[ 2 ])
|
(3)key为函数,指定取待排序元素的哪一项进行排序,函数用上面的例子来说明,代码如下:
1
|
sorted (students, key = lambda student : student[ 2 ])
|
key指定的lambda函数功能是去元素student的第三个域(即:student[2]),因此sorted排序时,会以students所有元素的第三个域来进行排序。
B、reverse()方法:对列表中的元素进行反向排序。
实例:
>>> alist2 = [4,6,72,1,2,4,7,3]
>>> alist2.reverse()
>>> print(alist2)
[3, 7, 4, 2, 1, 72, 6, 4]
5、列表的嵌套
套几层就是几维
nums1 = [1,2,3] #一维数组
nums2 = [1,2,3,[4,56]]#二维数组
nums = [1,2,3,4,['a','b','c','d','e',['一','二','三']],['四','五']] #三维数组
print(nums[4][5][1]) #取二
print(nums[5][1]) #取五
print(nums[-1][-1]) #取五
6、列表的循环遍历
1)for循环遍历
A、输出每个元素:
实例:
alist = ['abc',23,'中国','ccc','ddd',89]
for i in alist:
print(i)
输出:
abc
23
中国
ccc
ddd
89
B、enumerate() 函数
enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
语法:
enumerate(sequence,[start=0])
参数:
- sequence -- 一个序列、迭代器或其他支持迭代对象。
- start -- 下标起始位置。
实例1:
passwords = ['a','b','c','d']
a = list(enumerate(passwords,start=1)) #小标从1开始
print(a)
输出:
[(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd')]
实例2:
在for循环中的应用实例:
想输出索引以及对应的元素。
普通for循环:
passwords = ['a','b','c','d']
i = 0
for j in passwords:
print (i,j)
i += 1
输出:
0 a
1 b
2 c
3 d
For循环使用enumerate()
passwords = ['a','b','c','d']
for i,j in enumerate(passwords):
print(i,j)
输出:
0 a
1 b
2 c
3 d
2)while循环遍历
passwords = ['a','b','c','d']
count = 0
while count < len(passwords):
print(passwords[count])
count += 1
输出:
a
b
c
d
7、range()
Range()函数可创建一个整数列表,一般用在 for 循环中。
语法:
range(start,stop[,step])
参数说明:
- start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
- stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
- step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)
实例1:创建一个列表,里面的元素为1-10整数
l = list(range(1,11))
print(l)
输出:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
实例2:同上效果
alist = [i for i in range(1,11)]
print(alist)
输出:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
实例3:创建一个列表,里面元素是1-10中的偶数
alist = [i for i in range(1,10)]
print(alist[1::2])
实例3:创建一个列表,里面元素是1-10中的奇数
alist = [i for i in range(1,10)]
print(alist[::2])