初学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函数:可将迭代格式变成 索引-元素对

猜你喜欢

转载自blog.csdn.net/weixin_40763557/article/details/80880689