切片
说明:对比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函数:可将迭代格式变成 索引-元素对