1.定义
list:在[]内,用逗号分隔开多个任意类型数据的值
l1 = [1,'a',[1,2]] # 本质:l1 = list([1,'a',[1,2]])
2.类型转换
转换类型:但凡能被for循环遍历的数据类型都可以传给list()转换成列表类型,list()会跟for循环一样遍历出数据类型中包含的每一个元素然后放到列表中
list('wdad') # 结果:['w', 'd', 'a', 'd']
list([1,2,3]) # 结果:[1, 2, 3]
list({"name":"jason","age":18}) #结果:['name', 'age']
list((1,2,3)) # 结果:[1, 2, 3]
list({1,2,3,4}) # 结果:[1, 2, 3, 4]
3.列表的操作方式
-
正向取和反向取
- 正向取(从左往右)
>>> my_friends=['tony','jason','tom',4,5] >>> my_friends[0] tony
- 反向取(从右往左)
>>> my_friends[-1] 5
-
索引改值:不存在则报错
>>> my_friends = ['tony','jack','jason',4,5] >>> my_friends[1] = 'martthow' >>> my_friends ['tony', 'martthow', 'jason', 4, 5]
-
切片
- 顾头不顾尾
>>> my_friends=['tony','jason','tom',4,5] >>> my_friends[0:4] ['tony', 'jason', 'tom', 4]
- 步长:第三个参数默认为1
>>> my_friends[0:4:2] ['tony', 'tom']
l = [1,2,3,4,5,6] print(l[:3:1]) print(l[2::-1]) [1, 2, 3] [3, 2, 1]
- 通过索引实现列表翻转
>>> l[::-1] [6, 5, 4, 3, 2, 1]
-
长度
>>> len(my_friends) 5
-
成员运算in和not in
>>> 'tony' in my_friends True >>> 'xxx' not in my_friends True
-
增加
- append() 列表尾部追加
>>> l1 = ['a','b','c'] >>> l1.append('d') >>> l1 ['a', 'b', 'c', 'd']
- extend()迭代着增加
>>> l1.extend('abc') >>> l1 ['a', 'b', 'c', 'a', 'b', 'c']
- insert()在指定位置插入元素
>>> l1.insert(0,"first") # 0表示按索引位置插值 >>> l1 ['first', 'a', 'b', 'c', 'alisa', 'a', 'b', 'c']
-
删除
- del
>>> l = [11,22,33,44] >>> del l[2] # 删除索引为2的元素 >>> l [11,22,44]
- pop()默认删除列表最后一个元素,并将删除的值返回,括号内可以通过加索引值来指定删除元素
>>> l = [11,22,33,22,44] >>> res=l.pop() >>> res 44 >>> res=l.pop(1) >>> res 22
- remove()括号内指名道姓表示要删除哪个元素,没有返回值
>>> l = [11,22,33,22,44] >>> res=l.remove(22) # 从左往右查找第一个括号内需要删除的元素 >>> print(res) None
-
reverse()翻转列表内元素顺序
>>> l = [11,22,33,44] >>> l.reverse() >>> l [44,33,22,11]
-
sort()给列表内所有元素排序
- 排序时列表元素之间必须是相同数据类型,不可混搭,否则报错
>>> l = [11,22,3,42,7,55] >>> l.sort() >>> l [3, 7, 11, 22, 42, 55] # 默认从小到大排序 >>> l = [11,22,3,42,7,55] >>> l.sort(reverse=True) # reverse用来指定是否跌倒排序,默认为False >>> l [55, 42, 22, 11, 7, 3]
- 字符串、列表等都可以比较大小,原理相同:都是依次比较对应位置的元素的大小,如果分出大小,则无需比较下一个元素,比如
>>> l1=[1,2,3] >>> l2=[2,] >>> l2 > l1 True 字符之间的大小取决于它们在ASCII表中的先后顺序,越往后越大 >>> s1='abc' >>> s2='az' >>> s2 > s1 # s1与s2的第一个字符没有分出胜负,但第二个字符'z'>'b',所以s2>s1成立 True 列表排序 >>> l = ['A','z','adjk','hello','hea'] >>> l.sort() >>> l ['A', 'adjk', 'hea', 'hello','z']
-
循环遍历
for line in my_friends: print(line) 'tony' 'jack' 'jason' 4 5