天天看點

python——進階特性

切片操作符

Python提供了切片(Slice)操作符,切片操作十分有用,可以通過切片輕松取出某一段數列。比如前10個數:

#slice切片操作符 取前10個元素
L=list(range(0,100))
print(L[:10])#索引為0可以省略

》[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]      

L[0:10]表示從索引0開始取(索引為0可以省略),直到索引10為止(但是不包括索引10),就是一個“左閉右開”區間[0,10),切片操作符也可以取倒數元素比如L[-2:-1]取到倒數第二個元素98。

用切片操作符實作strip的預設方法

#str.strip() 去掉首尾的指定字元(字元串),預設為空格
str='   hello  world!   '
print(str.strip())

#使用[:]切片操作符去掉字元串首尾空格
n=0
j=0#前索引
k=0#後索引
while n<len(str):
    if str[n:n+1]!=' ':
        j=n
        break
    n=n+1
while n<len(str):
    if str[-n-1:-n]!=' ':
        k=-n
        break
    n=n+1
print(str[j:k])

》hello  world!
》hello  world!      

進階版

使用[:]切片操作符實作strip方法

#使用[:]切片操作符實作strip方法
def my_strip(str,chr=' '):
    n=0#循環索引重置
    J=0#前索引
    K=0#後索引
    Ls=len(str)#輸入字元串長度
    L=len(chr)#去掉字元長度
    #得到前索引J
    while n<Ls:
        if str[n:n+L]!=chr:
            J=n
            break
        n=n+L
    n=0#循環索引重置
    #得到後索引K
    while n<Ls:
        if str[-n-L:Ls-n]!=chr:
            K=Ls-n
            break
        n=n+L
    #傳回切片
    return str[J:K]

str='0000a000'
chr='000'
print(my_strip(str,chr))

》0a      

簡單版

看了一個老哥的代碼,非常簡單,佩服,記錄如下:

def trim(str,chr=' '):
    L=len(chr)
    while str[:L] == chr:   #如果字元串第一個是空格,删除第一個
        str = str[L:]
    while str[-L:] == chr:  #如果字元串最後一個是空格,删除最後一個
        str = str[:-L]
    return str