1、重新实现str.strip()
# -*-coding:utf8-*-
def rightStrip(tempStr, splitStr):
"""
:param tempStr:
:param splitStr:
:return:
"""
endindex = tempStr.rfind(splitStr)
while endindex != -1 and endindex == len(tempStr) - 1:
tempStr = tempStr[:endindex]
endindex = tempStr.rfind(splitStr)
return tempStr
def leftStrip(tempStr, splitStr):
startindex = tempStr.find(splitStr)
while startindex == 0:
tempStr = tempStr[startindex + 1:]
startindex = tempStr.find(splitStr)
return tempStr
str = " H "
print(str)
print(leftStrip(str, ' '))
print(rightStrip(str, ' '))
print("1234567890".rfind("6"))
2、python super类的使用
# 阅读下面的代码,它的输出结果是什么?
class A(object):
def __init__(self):
print("enter A")
super(A, self).__init__() # new
print("leave A")
class B(object):
def __init__(self):
print("enter B")
super(B, self).__init__() # new
print("leave B")
class C(A):
def __init__(self):
print("enter C")
super(C, self).__init__()
print("leave C")
class D(A):
def __init__(self):
print("enter D")
super(D, self).__init__()
print("leave D")
class E(B, C):
def __init__(self):
print("enter E")
super(E, self).__init__() # change
print("leave E")
class F(E, D):
def __init__(self):
print("enter F")
super(F, self).__init__() # change
print("leave F")
f = F()
enter F
enter E
enter B
enter C
enter D
enter A
leave A
leave D
leave C
leave B
leave E
leave F
小结
1. super并不是一个函数,是一个类名,形如super(B, self)事实上调用了super类的初始化函数,
产生了一个super对象;
2. super类的初始化函数并没有做什么特殊的操作,只是简单记录了类类型和具体实例;
3. super(B, self).func的调用并不是用于调用当前类的父类的func函数;
4. Python的多继承类是通过mro的方式来保证各个父类的函数被逐一调用,而且保证每个父类函数
只调用一次(如果每个类都使用super);
5. 混用super类和非绑定的函数是一个危险行为,这可能导致应该调用的父类函数没有调用或者一
个父类函数被调用多次。
3、合并两个列表排除重复元素
alist = ['a', 'b', 'c', 'd', 'e', 'f']
blist = ['x', 'y', 'z', 'e', 'f']
def merge_list(*args):
s = set()
for i in args:
s = s.union(i)
# print(s)
return list(s)
print merge_list(alist, blist)
4、打乱一个排好序的列表
from random import shuffle
# python2写法
alist = range(10)
# python3 写法
alist = [i for i in range(10)]
print(alist)
shuffle(alist)
print(alist)