一、创建列表
1、使用方括号创建列表。
a=[ ] #创建空列表
a=[1,3,6,8] #创建非空列表
2、使用list函数创建列表
a=list( ) #创建空列表
a=list("abc") #得到列表["a","b","c","d"]
3、使用推导式生成列表
a=[x for x in range(6)]
b=[3*x for x in a]
***推导式格式: [生成元素的表达式 for 循环变量 in 可迭代对象 if 条件]
4、使用字符串的split方法生成列表
a="1,2,30,40"
b=a.split(",") #用逗号分割字符串为列表。b=["1","2","30","40"]
c=a.split(",",2) #仅得到前2项,其余项为第3项。c=["1","2","30,40"]
二、列表操作符
1、索引[ ]
a=[1,2,3,4]
b=a[0]+a[-1] #通过索引读取列表项
a[-2]=6 #可改变列表项的值
2、切片[:]
a=[1,2,3,4]
b=a[1:] #b=[2,3,4]
c=a[1:3] #c=[2,3]
d=a[1:-1] #d=[2,3]
a[1:3]=[7,8] #可通过切片对列表部分项进行修改
k=a[0::2] #2为步长。k=[1,3]
3、成员运算符(in,not in)
a=[1,2,3,4]
则 2 in a为True,2 not in a为False
4、连接运算符+
a=[1,2]
b=[3,4]
c=a+b #c=[1,2,3,4]
5、重复操作符*
a=[1]*3 #a=[1,1,1]
6、删除项del
a=[1,2,3,4,5]
del a[0::2] #a=[2,4]
del a #删除列表
三、列表的内置函数
1、append(item):在列表末尾追加项item。
a=[1,2,3,4]
a.append(5) #a=[1,2,3,4,5]
b=[[]]*3 #b=[[ ],[ ],[ ]]
b[0].append(1) #b=[ [1],[1],[1] ]
注意:通过*生成的列表,项是同一个。
2、count(item):统计项item在列表中出现的次数。
a=[1,2,1,3,1,4],则a.count(1)的值为3
3、extend(t):在列表末尾添加多个值(t为列表)。
a=[1,2,3]
a.extend([4,5]) #a=[1,2,3,4,5]
4、index(value,start,stop):在索引值在start与stop的元素中查找元素value。
如果存在项,则返回第一个匹配项的索引。否则报ValueError异常。
a=[1,2,1,3],则a.index(1)的值为0
可参考以下代码确定项是否存在,存在时输出项的索引,不存在时输出“No”:
if 4 in a:
print(a.index(4))
else:
print("No")
5、insert(index,item):在索引位置index插入项item。
a=[1,2,3]
a.insert(1,4) #a=[1,4,2,3]
6、pop(index):移除索引位置index对应的项并返回移除项的值。
a=[5,6,7,8]
b=a.pop(1) #移除索引为1的项。a=[5,7,8],b=6
a.pop( ) #移除最后一项
7、remove(item):根据值item移除项。项不存在时报ValueError错误。
a=[5,6,7,8]
a.remove(6) #a=[5,7,8]
8、reverse( ):将列表反向(逆序)。
a=[1,2,3]
a.reverse( ) #a=[3,2,1]
9、sort(key,reverse):排序。
参数key可选,指定排序的比较键。
参数reverse可选,为True降序,为False升序(为默认值)。
a=[2,1,5,3]
则:执行“a.sort( )”后,a=[1,2,3,5]
10、clear( ):清空列表。
a=[1,2,3],则执行“a.clear( )”后,a=[ ]
11、copy( ):创建列表副本
a=[1,2,3]
b=a.copy( )
说明:
----创建的副本ID与原列表的ID是不同的。
----c=a时c与a有相同的ID。
四、列表相关函数
1、len:返回列表项个数。如:
a=[11,25,30,461],则len(a)的值为4
2、max:返回列表的最大值。要求列表元素类型相同。如:
a=[21,4,9,11],则max(a)的值为21
a="How abcd a 12345"
x=a.split(" ")
s=max(x,key=len) #以长度作为比较函数,求x的最大值
3、min:返回列表的最小值。要求列表元素类型相同。如:
a=[21,4,9,11],则min(a)的值为4
4、list:将一个可迭代对象转为列表。如:
a=list("abc"),则a=['a','b','c']
5、sorted:返回排序后的新列表。如:
a=[2,5,1]
b=sorted(a) #b=[1,2,5]。注意!a=[2,5,1]
五、列表排序主要有以下几种方法:
1、使用列表的内置函数sort(key,reverse)
---key可选,指定比较函数。
---reverse可选,为True降序,为False升序(默认值)。
---执行sort排序后,列表id不变,但元素顺序发生了变化。
2、使用python内置函数sorted(key,reverse)
---参数作用与sort相同。
---排序后,列表并没有变化,函数返回一个排序后的新列表。
六、列表排序的几点说明
1、可由key参数指定排序的比较函数。如:
a=["abc","de","12345"]
a.sort(key=len)
#“key=len”表示按长度排序。故a=["de","abc","12345"]
a=["12","3","20"]
a.sort() #按字母顺序比较:a=["12","20","3"]
a.sort(key=int) #按转换后的数值比较:a=["3","12","20"]
2、元素为元组或列表时,不使用key参数,只能对元素的第一元素排序。如:
a=[[2,1],[3,2],[1,3]]
a.sort( ) #a=[1,3],[2,1],[3,2]]
3、可以使用key参数对组成列表元素的元组(或列表)按其他元素排序。如:
x=[(3,1,2),(1,2,3),(4,3,1)]
x.sort(key=lambda a:a[2]) #按元组的第3个元素排序
print(x) #x=[(4, 3, 1), (3, 1, 2), (1, 2, 3)]
#lambda定义一个匿名函数,用作排序的比较函数。参考自定义函数部分。
4、利用key参数也可实现多重排序。如:
a=[[5,4,3],[2,4,1],[3,1,6]]
a.sort(key=lambda x:[x[1],-x[2]) #a=[[3,1,6],[5,4,3],[2,4,1]]
#运行效果:按项的第2个值升序、再按第3个值降序。

