python学习——列表
吴老的《selenium webdriver 实战宝典》出版了!
一.学习内容
* 列表运算符
* 列表操作函数
* 列表函数
* sort函数精讲
二.列表运算符
1. len(list)、+、*、in 、遍历
a=[1,2,3]
len(a)
[1,2,3]+[4,5,6]
['a']*3
3 in a
for i in[1,2,3]:print i
三.列表操作函数
1. 列表统计
[2,4,5,4,4,4,4].count(4)
2. 列表index(value,start,end) start end为闭开区间
a=[2,3,4,'b']
a.index('b')
a.index('b',2)
a.index('b',4)
a.index('b',1,5)
a.index(‘b’,1,5)
从a中查找元素b的位置,从索引1位置开始包括1,到索引位置5但不包括位置5
3. 列表pop删除-pop(index),index不写默认为最后一个元素的索引
4. 列表reverse()-列表反向输出并不会排序
a.reverse()
5. 列表sort()-列表排序
a.sort()
6. 小练习-将字符串排序后反向输出
lista=[1,2,3,-1,-2,-3]
lista.sort()
lista.reverse()
切记:此处不可以写成:lista.sort().reverse()
因为lista.sort()只会对lista本身进行排序,但是没有返回值,所以在进行.reverse()就会报错NoneType的问题
7. sort()函数排序和sorted()函数排序区别-sorted不改变原值,而sort()改变原值
a=[1,2,3,-1,-2,-3]
sorted(a,reverse=True)
发现sorted后,a的值没有改变,当我们用sort()函数:
发现a的值发生了改变。
所以这两个函数的区别是:
A:sort函数没有返回值,会改变原元素的值
B:sorted函数有返回值,不会改变原元素的值
四.列表函数
1. cmp(list1,list2):比较list1和list2的大小
list1=list2返回0
list1<list2返回-1
list1>list2返回1
代码为:
a=[1,2,3]
b=[2,3,4]
cmp(a,b)
cmp(b,a)
2. max(list1):取列表list1中最大的值
a=[1,2,3]
max(a)
3. len(list1):返回列表的长度
a=[1,2,3]
len(a)
4. min(list1):取列表中最小的值
b=[2,3,4]
5. list(tuple):将元组转换为列表
list((2,3,’b’))
五.sort函数精讲
1. sort函数使用定义
reverse默认为false,即升序,True为逆序
作用:对原序列进行排序,也就是直接在原序列上操作,没有返回值。
cmp:为一个定制的比较函数,接受两个参数,并且如果第一个参数小于第二个参数,则返回一个负数,大于则返回一个整数,等则返回0,默认值为None
key:也是一个函数,这个函数会从每个元素中提取一个用于比较的关键字,默认值为None。
2. sort函数小练习-将一个list按长度大小输出
# encoding = utf-8
def L(tup):
return len(tup)
list1=[(1,5,3),(1,3,6,3),(1,1,2,4,5,6),(1,9)]
list1.sort(key=L,reverse=True)
print list1
3. sort函数小练习-将一个list中最后一个数字乘以5比较大小,升序输出
法一:
# encoding = utf-8
def print_len(tup):
return (tup[-1])*5
list1=[(1,5,3),(1,3,6,3),(1,1,2,4,5,6),(1,9)]
list1.sort(key=print_len,reverse=True)
print list1
法二:
# encoding = utf-8
list1=[(1,5,3),(1,3,6,3),(1,1,2,4,5,6),(1,9)]
list1.sort(key=lambdax:x[-1]*5,reverse=True)
print list1
4. sort函数小练习-将一个list中每项元组求和,升序输出
法一:
# encoding = utf-8
def sums(tup):
return sum(tup)
list1=[(1,5,3),(1,3,6,3),(1,1,2,4,5,6),(1,9)]
list1.sort(key=sums,reverse=True)
print list1
法二:
# encoding = utf-8
list1=[(1,5,3),(1,3,6,3),(1,1,2,4,5,6),(1,9)]
list1.sort(key=lambdax:sum(x),reverse=True)
print list1
法三:
# encoding = utf-8
list1=[(1,5,3),(1,3,6,3),(1,1,2,4,5,6),(1,9)]
list1.sort(key=sum,reverse=True)
print list1
5. sort函数小练习-将list按每个元素的第一个的绝对值比较大小
# encoding = utf-8
list1 =[(-1,5,3),(-5,3,6,3),(1,1,2,4,5,6),(2,9),(-2,10)]
def compare(a,b):
if abs(a)>abs(b):
return 1
elif abs(a)==abs(b):
return 0
else:
return -1
def L(tup) :
returntup[0]
list1.sort(cmp=compare,key = L,reverse =False)
print list1