3.Python進階-切片+列表生成式+複雜表達式+條件過濾+多層表達式

本文介紹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)'''
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章