以[ ]括起来,每一个元素用","隔开,且能够存放各类数据类型。java
列表相比于字符串,不只能够存放不一样的数据类型,并且可存放大量的数据。32位python能够存放:536870912个元素,64位能够存放:1152921504606846975个元素。python
列表是有序的(按照保存的顺序),有索引,能够切片方便取值。c++
列表属于可变数据类型。编程
lst = ["python", "java", "c", "c++", [11, 22,33]] print(lst[0]) # python print(lst[4][0]) # 11
列表切片后获得仍是列表app
lst = [11, 22, 33, 44, 55, 66] print(lst[0:3]) # [11, 22, 33] print(lst[1::2]) # [22, 44, 66] print(lst[2::-1]) # [33,22,11]
1).增spa
在列表末尾增长元素指针
lst = [11, 22, 33, 44]
lst.append(55) print(lst) # [11, 22, 33, 44, 55]
lst = [11, 22,33] lst.insert(1, 55) print(lst) # [11, 55, 22, 33]
迭代添加,增长的元素须为可迭代对象,且添加位置为末尾code
lst = [11, 22, 33] lst.extend([55, 66]) # [11, 22, 33, 55, 66] lst.extend("python") # [11, 22, 33, 55,66, 'p', 'y', 't', 'h', 'o', 'n'] lst.extend(44) # 报错
2).删除对象
默认删除列表末尾元素,也可删除指定位置元素,前提得提供索引。该删除有返回值,返回值为删除的元素blog
lst = [11, 22, 33, 44, 55] el = lst.pop() # 55 print(lst) # [11, 22, 33, 44] lst.pop(2) print(lst) # [11, 22, 44]
根据元素内容进行删除,若列表中有多个相同的元素,则执行remove操做删除的是第一个元素
lst = [11, 22, 33, 44] lst.remove(44) print(lst) # [11, 22, 33]
切片删除
lst = [11, 22, 33, 44, 55, 66] del lst[0] print(lst) # [22, 33, 44, 55, 66] del[1:4:2] print(lst) # [22, 44, 66]
清空列表
lst = [11, 22, 33, 44, 55] lst.clear() print(lst) # []
3).修改
指定索引修改
lst = [11, 22, 33, 44] lst[2] = 55 print(lst) # [11, 22, 55, 44]
根据切片修改,若是步长不是1,则修改的元素的个数与提供的元素个数须匹配。若是切片没有步长或者步长是1,则不用关心个数
lst = [11, 22, 33, 44, 55] lst[1:4] = '编程' print(lst) # [11, "编", "程", 55]
lst = [11, 22, 33, 44, 55, 66]
lst[1:5:2] = "编程"
print(lst) # [11, "编", 33, "程", 55, 66]
4).查询
列表是一个可打迭代对象,因此能够进行for循环
for i in lst: print(i)
查询某元素出现的次数
lst = [11, 22, 11, 44, 55, 66] c = lst.count(11) print(c) # 2
默认按升序排列,若需降序排列,只需在括号内添加reverse=True
lst = [11, 44, 33, 22, 55] lst.sort() print(lst) # [11, 22, 33, 44, 55]
lst.sort(reverse=True) print(lst) # [55, 44, 33, 22, 11]
翻转列表,无返回值
lst = [11, 33, 22, 55, 44] lst.reverse() print(lst) # [44, 55, 22, 33, 11]
采用降维操做
lst = [11, 22, [33, ["python", 55]], 66] print(lst[1]) # 22 print(lst[2][0]) # 33 print(lst[2][1][0]) # p lst[2][1][0] = lst[2][1][0].replace("p", "P") print(lst) # [11, 22, [33, ['Python', 55]], 66]
lst[2].append(77)
print(lst) # [11, 22, [33, ["Python", 55], 77], 66]
lst = [11, 22, 33, 44] for i in lst: lst.remove(i) print(lst) # [22, 44]
缘由:
在for的运行过程当中,会有一个指针来记录当前循环的元素是哪一个,一开始这个指针指向第0个,而后获取到第0个元素。紧接着删除第0个。这个时候,原来是第一个的元素会自动的变成第0个。而后指针向后移动一次,指向第1个元素。这时原来的1已经变成了0,也就不会被删除了。
lst = [11, 22, 33, 44]
del_lst = []
for i in lst:
del_lst.append(i)
for i in del_lst:
lst.remove(i)
print(lst) # []
注意:因为删除元素会致使元素的索引改变,因此容易出现问题。尽可能不要在循环中直接删除元素。能够把要删除的元素添加到另外一个列表中而后批量删除。
lst = ["语文", "数学", "英语","高数","体育"] for i in range(len(lst)): print(i, lst[i])