1. 程式人生 > >初學Python之七:高階特性

初學Python之七:高階特性

  • 切片
    說明:對比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函式:可將迭代格式變成 索引-元素對