python學習筆記3
阿新 • • 發佈:2018-02-11
generator params tdi try release ati com lis 計數
合並字符串
r來形成原始字符串
+不能像c#一樣直接連接一個字符串和有關數值。
切片
能夠 從頭開始也能夠倒數計數。也能夠間隔一定距離取
>>> numlist=list(range(100))
>>> numlist
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 , 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]
>>> numlist[:10)
SyntaxError: invalid syntax
>>> numlist[:10] #這裏冒號前面的0能夠省略
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> numlist[:10:2]
[0, 2, 4, 6, 8]
>>> numlist[-10::2] #這裏冒號中間的-1能夠省略;
[90, 92, 94, 96, 98]
>>> numlist[-10::3]
[90, 93, 96, 99]
>>>
叠代:
可叠代對象iterable 、 for … in … 、 enumerate函數能夠把一個索引元素對,也就相當於一個帶序號和實際內容的元素對組成的list
容器和生成器都是可叠代對象,而僅僅有生成器才是叠代器對象。
容器包含序列(list與tuple)、集合set、字典dict。Enumerate能夠對序列生成索引元素對。
mydict={}
mydict[‘數學‘]=60
mydict[‘語文‘]=90
mydict[‘英語‘]=100
for str,score in mydict.items():
print(str,score)
for str in mydict.items():
print(str)
for index,str in enumerate(mydict.items()):
print(index,str)
列表生成式
列表生成式就是用生成式來簡化循環生成列表的過程。
生成式與if語句聯合
generatedList=[x*x for x in range(1,11) if x%2==0]
print(generatedList);
兩個for聯合能夠使用兩層循環形成全排列
allSortedList=[(x,y) for x in ‘ABC‘ for y in [1,2,3]]
print(allSortedList)
列出當前文件夾下全部文件和文件夾名
import os
dir=[d for d in os.listdir(‘.‘)]
print(dir)
字符串變小寫
#測試
strlist=[‘Abc‘,‘dE12‘,334,‘12F‘]
#strlist=[strs.lower() for strs in strlist if isinstance(strs,str)]
strlist=[strs for strs in strlist if not isinstance(strs,str) or isinstance(strs.lower(),str)]
print(strlist)
生成器
假設列表元素能夠依照某種算法推算出來,那就不必生成完整的列表。僅僅要依據須要來生成,這樣就能節省內存空間。
這就是生成器generator();generator是一個算法,而不是一個列表,假設想訪問下一個元素須要使用next(g);
生成器有兩種方法創建。第一種是使用生成式的方式。另外一種是使用定義生成器函數的方式。
生成式也是iterable對象
生成式的方式生成生成器
g=(x*x for x in range(1,10))
for n in g:
print(n)
iterable對象在叠代到最後一個元素後假設繼續叠代會產生StopIteration異常,能夠進行捕獲。
# -_-! coding: utf-8 -_-!
myList=list(range(1,100))
for index,num in enumerate(myList):
print(index,num)
#叠代
mydict={}
mydict[‘數學‘]=60
mydict[‘語文‘]=90
mydict[‘英語‘]=100
for str,score in mydict.items():
print(str,score)
#dict的默認是叠代key,能夠用.value()叠代值,能夠用.items()叠代鍵值對
for str in mydict.items():
print(str)
for index,str in enumerate(mydict.items()):
print(index,str)
#生成式
#與if語句聯合
generatedList=[x*x for x in range(1,11) if x%2==0]
print(generatedList);
#兩個for聯合
#能夠使用兩層循環形成全排列
allSortedList=[(x,y) for x in ‘ABC‘ for y in [1,2,3]]
print(allSortedList)
#列出當前文件夾下全部文件和文件夾名
import os
dir=[d for d in os.listdir(‘.‘)]
print(dir)
#字符串變小寫
#測試
strlist=[‘Abc‘,‘dE12‘,334,‘12F‘]
#strlist=[strs.lower() for strs in strlist if isinstance(strs,str)]
strlist=[strs for strs in strlist if not isinstance(strs,str) or isinstance(strs.lower(),str)]
print(strlist)
lista=[1,2,3]
listb=[2,3,4]
lista=lista+listb;
print(lista)
#生成器
##生成式的方式生成生成器
g=(x*x for x in range(1,10))
for n in g:
print(n)
##定義函數的方式生成生成器
###斐波那契額數 1 1 2 3 5 8
def fab(n):
x,y,z=0,1,0
while z<n:
yield y #返回生成器的函數與其他函數的差別就在於print改成yied,在此處就可調用next()
x,y=y,x+y#這裏能夠用作交換x,y的值比其他語言要少了兩行
z=z+1
return ‘done‘
g=fab(10)
for n in g:
print(n)
##捕獲StopIteration異常
def fab(n):
x,y,z=0,1,0
while z<n:
yield y #返回生成器的函數與其他函數的差別就在於print改成yied,在此處就可調用next()
x,y=y,x+y#這裏能夠用作交換x,y的值比其他語言要少了兩行
z=z+1
return ‘done‘
f=fab(9)
while True:
try:
x=next(f)
print(x)
except StopIteration as e:
print(‘stopIteration結束了‘,e.value)
break
#楊輝三角
def triangles():
x,y,z,temp=[1],0,0,[]
while True:
yield x
for num in x:
temp.append(num+y)
y=num
temp.append(x[-1]+z)
x,temp,y=temp,[],0
return ‘done‘
n=0
for t in triangles():
print(t)
n=n+1
if n==10:
break
python學習筆記3