Python——高級特性

#!/usr/bin/python

# -*- coding:UTF-8 -*-

__author__ = 'wxq'

from collections import Iterable

"""

1. 切片功能

1). 取列表中的前三個(gè)元素List[0:3],索引0開始,取到索引3,但不包括索引3;

2). 如果第一個(gè)索引是0,可以省略;

3). List[1:3]從索引1開始取,取到索引3但不包含索引3,所以只取了兩個(gè);

4). List[-1]表示倒數(shù)第一個(gè)

5). List[:10]前10個(gè),List[-10:]后10個(gè)

5). List[:10:2]前10個(gè)數(shù),每2個(gè)取一個(gè)

6). List[::3]所有數(shù)每3個(gè)取一個(gè)

*7). 字符串也可以使用切片功能,操作結(jié)果仍是字符串

*8). 元組tuple也可以使用切片功能,操作結(jié)果仍是元組

"""

myList = [0,1,2,'a','abc']

print myList[0:3]

print myList[:3]

print myList[1:3]

print myList[-1]

print myList[-2:-1]

print myList[-2:]

print myList[:5:2]

print myList[::3]

myTuple =? ('a','b','c',1,2,3,'z')

print myTuple[:]

print myTuple[:3]

print myTuple[1:5]

print myTuple[-3:-1]

print myTuple[::2]

myString = "ABSHDBASGHSV"

print myString[:]

print myString[:3]

print myString[1:3]

print myString[-1]

print myString[::3]

print "---------------------------END---------------------------"

"""

2. 迭代功能Iteration

1). 導(dǎo)入collection模塊的Lterable類型,使用isinstance(,Iterable)來判斷是否可以迭代;

2). 對于List想要實(shí)現(xiàn)索引-值,python內(nèi)置函數(shù)enumerate可以把列表變成此種格式;

3). 可以引用變量來輸出內(nèi)容

"""

print isinstance("abc",Iterable)

print isinstance('abc',Iterable)

print isinstance(['a','c','v','f'],Iterable)

print isinstance((1,2,3,4,'t'),Iterable)

print isinstance(123,Iterable)

for index,value in enumerate(['a','c',1,2,3]):

print index,value

for i in (1,2,3):

print i

a = 'w'

for i in [(1,2),('2',a,'y'),a]:

print i

for x,y,z in [(1,2,3),(a,'2','0')]:

print x,y,z

print "---------------------------END---------------------------"

"""

3. 列表生成式List Comprehensions

1). range(1,11)表示從1開始,到11但不包含11

2). [x*x for x in range(1,11)],寫列表生成式時(shí),把要生成的元素x * x放到前面,后面跟for循環(huán),就可以把list創(chuàng)建出來

3). 除了2)中的方法之外可以使用if等條件或者循環(huán)語句判斷寫列表生成式

4). 可以使用兩層循環(huán)寫列表生成式

5). dict中的iteritems遍歷字典中的數(shù)據(jù)

6). 把List中所有的字符串變成小寫,首先要判斷是不是字符串,不是字符串會(huì)報(bào)錯(cuò)

"""

print range(1,11)

print [x*x for x in range(1,11)]

print [x*x for x in range(1,5) if x%2!=0]

print [x/y for x in range(0,4) for y in range(1,3)]

print [(x,y) for x in range(0,4) if x%2==0 for y in range(1,3) if y!=1]

myDict = {'1':'a','2':'A'}

for i in myDict.iteritems():

print type(i)

print i

for i,j in myDict.iteritems():

print type(i)

print i

for i in ['HELL','12H',12]:

if isinstance(i,str):

print i.lower()

else:

print i

print "---------------------------END---------------------------"

"""

4. 生成器:一邊循環(huán)一邊計(jì)算的機(jī)制,稱為生成器(Generator)

1). 把一個(gè)列表生成式的[]改成(),就創(chuàng)建了一個(gè)generator

2). 創(chuàng)建L和g的區(qū)別僅在于最外層的[]和(),L是一個(gè)list,而g是一個(gè)generator

3). yield關(guān)鍵字,generator的函數(shù),在每次調(diào)用next()的時(shí)候執(zhí)行,遇到y(tǒng)ield語句返回,再次執(zhí)行時(shí)從上次返回的yield語句處繼續(xù)執(zhí)行。

4).

"""

myGenerator = (x*2 for x in range(1,10) if x%2==0)

for i in myGenerator:

print i

print "*****"

def fib(max):

n,a,b = 0,0,1

while n

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容