本文介紹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)'''