初學Python之七:高階特性
阿新 • • 發佈:2019-02-13
切片
說明:對比Java 對於 list tuple string 的擷取,Python更為簡單,因為Python定義了切片的概念,下面對應Java和Python對於list和String擷取的方法。
比如 對於list的擷取
定義一個list#Python: L =[1,2,3,4,5,6,7,8,9] //Java Integer[] i ={1,2,3,4,5,6,7,8,9,10}; //asList接受的引數是一個泛型的變長引數,而基本資料型別是無法泛型化 List l = Arrays.asList(i);//這裡把陣列轉化為list
輸出該list的前5位
#Python
print(L[0:5])#使用切片擷取,
//Java
for (int j = 0; j <5 ; j++) {
System.out.print(l.get(j)+" ");
}
輸出該list的後5位並進行倒序
#python
print(L[-1:-6:-1])//說明切片順序是先進行切片在進行倒序處理注意這裡不包含-6這個項
//java
//倒序輸出後5位
for (int x = i.length-1; x >=i.length-6 ; x--) {
System.out.print(l.get(x)+ " ");
}
練習:利用切片操作,實現一個trim()函式,去除字串首尾的空格
#方法一:通過遞迴的方式
def trim2(x):
if (x[:1] == " "):
x= x[1:]
elif (x[-1:] == " "):
x= x[:-1]
elif((x[:1] != " ") & (x[-1:] != " ")):
return x;
return trim2(x);
print(trim2(" acv "))#輸出acv
#方法二通過迴圈和切片
def trim3(x):
for i in range(len(x)):
if(x[i:i+1 ]!=" "):
a=i
break
for j in range(len(x),-1,-1):
if(x[-j:-j+1]!=" "):
b=j
break
return x[i:j]
print(trim3(" acv "))
總結:
Python的切片對於java來說還是帶來了很大的便利,可隨意的擷取list、tuple,而無需進行遍歷。
- 迭代
不同於java和c等計算機語言,Python迭代的抽象性更高,Python的迭代支援並不依靠下標,只要是可迭代物件,無論有無下標,都可以迭代。
#迭代dic:
x ={"a":1,"b":2,"c":3}
for key in x:
print(key)
#迭代str
#迭代str:
y ="ABC"
for i in y:
print(i)
- 判斷是否可以迭代:通過collections模組的Iterable型別判斷
print(isinstance('abc', Iterable))#true Str是可迭代的
print(isinstance(123, Iterable))#false 整數是不可迭代的
- enumerate函式:可將迭代格式變成 索引-元素對