今日大纲:
1.初识列表
2.列表的切片
3.列表的常用操作
4.列表的嵌套
5.range
6.元祖
1.初识列表
列表是容器类型数据,可以放各种数据在这个列表里。
列表是以括号组成,每个元素以逗号(,)区分,以索引来取数据,索引从0开始,列表是有序的,可以存放大量数据。
2.列表的切片操作:
列表的切片操作和字符串类似。
>>> a [1, 2, 3, 4, 5] >>> a[0] 1 >>> a[-1] 5 >>> a[:3] [1, 2, 3] >>> a[:-1] [1, 2, 3, 4] >>> a[:-1:2] [1, 3] >>> a[-1::-1] [5, 4, 3, 2, 1] #切片赋值操作需要注意的: >>> a[:3] = 'abc' >>> a ['a', 'b', 'c', 4, 5] >>> a[:3] = 'abcdefg' #虽然取3个元素赋值,但是在赋值字符串时候,是以迭代每个字符添加进去的 >>> a ['a', 'b', 'c', 'd', 'e', 'f', 'g', 4, 5] >>> a [1, 2, 3, 4, 5] >>> a[::2] [1, 3, 5] >>> a[::2] = 'abc' #切片+步长操作赋值需要注意的: >>> a ['a', 2, 'b', 4, 'c'] >>> a[::2] = ['a','b','c','d'] #取到几个就几个赋值,一一对应 Traceback (most recent call last): File "", line 1, in a[::2] = ['a','b','c','d'] ValueError: attempt to assign sequence of size 4 to extended slice of size 3 >>> a[::2] = ['a','b','c'] >>> a ['a', 2, 'b', 4, 'c']
3.列表的常用操作
增:
insert(index,value) #按索引插入数据 append(value) #插在列表末尾最后一个 extend(iterable) #迭代插入,添加在末尾,可迭代对象如:列表,字符串等
删:
pop(index) #删除列表该索引的元素,会返回元素,可以接着temp = list.pop(0) remove(value) #以元素值删除列表中的改元素 del list[index] #以索引删除,可以用切片方式 clear() #清空整个列表
改:
list[index] = value #以索引方式修改数据,可以切片加步长修改,看上面的切片操作
查:
list[index] #以索引方式查看数据,可以加切片加步长
其他:
index(value) #返回元素的索引,找不到抛出ValueError sort(reverse=False) #排序列表元素(默认从小到大,reverse=True表示从大到小) ,注:列表中只能有数字,有字母抛出TypeError reverse() #反转列表,无关字母数字的问题 count(value) #计value在该列表中的重复次数
4.列表的嵌套
列表中的列表。
替换列表元素操作:
1.通过元素下标来替换
list[index][index] = value
2.通过递归修改
def replace_list(list1,old,new): temp = list1 for i in list1: if type(i) is list: replace_list(i,old,new) elif i == old: temp[temp.index(i)] = new list1 = [1, 2, 3, [2, 3, [6, 6, 8], 4, 5, 6]] replace_list(list1, 6, '改') print(list1) result: [1, 2, 3, [2, 3, ['改', '改', 8], 4, 5, '改']]
3.通过堆栈方式修改
def update_list(lis,old_ele,new_ele): list2 = [lis] # list2为堆栈列表 while list2: # 如果栈为空结束循环 temp = list2.pop() # 每次弹出栈顶元素 for i in range(len(temp)): # 以索引循环 if temp[i] == old_ele: # 如果元素是要修改的,则进行修改 temp[i] = new_ele elif type(temp[i]) == list: # 如果元素是列表,就把该列表压栈 list2.append(temp[i]) list1 = [1, 2, 3, [2, 3, [6, 6, 8], 4, 5, 6]] old_ele = 6 new_ele = '改' update_list(list1,old_ele,new_ele) print(list1) ''' result: [1, 2, 3, [2, 3, ['改', '改', 8], 4, 5, '改']] '''
5.range
一般是和for搭配使用。
格式:
range(10) #0到9 range(1,10) #1到9,顾头不顾尾 range(1,11,2) #1到10,步长为2 range(10,0,-1) #10到1(倒序),-1步长很重要,默认为1是正序
6.元祖
不可以修改,删除元素,只能查看。
方法:
count(value) #计value在元祖重复的次数 index(value) #返回元素下标,找不到抛出ValueError