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

 

posted on 2017-03-02 10:09  老样子  阅读(157)  评论(0编辑  收藏  举报

导航