您的位置:首页 > 编程语言 > Python开发

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

2017-05-16 23:51 447 查看
本文介绍Python语言的以下功能:

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

(1)切片

#-*- coding:utf-8 -*-
#1.功能:切片(slice)的理解
L1=['shiyan','xiangyang','suizhou','wuhan','wuxi','shanghai']
L2=L1[:] #表示从头到尾切片,等价于复制L1
L3=L1[:2] #表示从索引0开始,到所有2结束,但是不包括索引2
L4=L1[1:4] #表示将L1中索引为1,2,3的元素切片到L4

print L2
print L3
print 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 L1
L2=range(1,15,3) #()中三个参数:起点,终点,步长
print L2

#2.复杂的生成列表的操作(1)
L3=[] #先定义一个空的list
for 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.定义一个dict
d = { '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)'''
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息