3.Python进阶-切片+列表生成式+复杂表达式+条件过滤+多层表达式

来源:互联网 发布:windows文件加密 编辑:程序博客网 时间:2024/06/07 15:42

本文介绍Python语言的以下功能:

(1)切片;(2)列表生成式;(3)复杂表达式;(4)条件过滤;(5)多层表达式。

(1)切片

#-*- coding:utf-8 -*-#1.功能:切片(slice)的理解L1=['shiyan','xiangyang','suizhou','wuhan','wuxi','shanghai']L2=L1[:]  #表示从头到尾切片,等价于复制L1L3=L1[:2] #表示从索引0开始,到所有2结束,但是不包括索引2L4=L1[1:4]  #表示将L1中索引为1,2,3的元素切片到L4print L2print L3print L4#2.倒序切片L5=L1[-4:-1]print L5  #输出: ['xiangyang', 'suizhou', 'wuhan']#对字符串切片a='ABCDEFG'b=a[1:5]print b  #输出  BCDE
(2)列表生成式

#-*-coding:utf-8 -*-#功能:python生成列表的功能#1.测试python生成列表L1=range(1,15)print L1L2=range(1,15,3)  #()中三个参数:起点,终点,步长print L2#2.复杂的生成列表的操作(1)L3=[] #先定义一个空的listfor x in range(1,10):      L3.append(x*x)print L3#3.复杂的生成列表的操作(2)#生成列表p[1*2,3*4,...,99*100]L4=[k*(k+1) for k in range(1,100,2)]print L4
(3)复杂表达式

#-*-coding:utf-8 -*-#功能:测试复杂的表达式#1.定义一个dictd = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }#2.通过一个复杂的列表生成式将其变成一个HTML表格#iteritems()函数是迭代器函数,用法为for k,v in dict.iteritems()tds=['<tr><td>%s</td><td>%s</td></tr>' % (name,score) for name,score in d.iteritems()]print '<table>'print '<tr><th>Name</th><th>Score</th></tr>'print '\n'.join(tds)  #字符串join的方法可以把一个list拼接成一个字符串print '</table>'#上述代码输出结果为:#<table>#<tr><th>Name</th><th>Score</th></tr>#<tr><td>Lisa</td><td>85</td></tr>#<tr><td>Adam</td><td>95</td></tr>#<tr><td>Bart</td><td>59</td></tr>#</table>
(4)条件过滤

#-*- coding:utf-8 -*-#功能:测试python的条件过滤(condition filter)#1.该测试列表无过滤功能,从头到尾顺序输出a1=[x * x for x in range(1, 11)]#2.通过在列表生成式的for循环后面添加if判断,来实现条件过滤#  有了if条件,只有if判断为Ture的时候,才把循环的当前元素添加到列表中a2=[x*x for x in range(1,11) if x%2==0]#3.新测试:编写一个函数,其接受一个list,然后把list中的所有字符串变成大写后#  返回,非字符串元素被忽略#提示:(1)isinstance(x, str) 可以判断变量 x 是否是字符串#      (2) 字符串的 upper() 方法可以返回大写的字母。def RealizeStr(a):      return [x.upper() for x in a if isinstance(x,str)]#4.调用定义的函数a3=RealizeStr(['Wuhan','Shanghai',123,'beijing',True])print a3  #输出为: ['WUHAN', 'SHANGHAI', 'BEIJING']
(5)多层表达式

#-*- coding:utf-8 -*-#功能:测试python中的多层表达式#1.for循环可以嵌套,因此,在列表生成式中,也可以用多层for循环来生成列表a=[m+n for m in 'ABC' for n in '123']print a#2.以上多层表达式,可以翻译成如下代码:u'''L=[]for m in 'ABC':      for n in '123':            L.append(m+n)'''

阅读全文
0 1
原创粉丝点击