目录
一.定义一个生成器函数,生成1-10
(使用next(generator)方法获取1-10,使用for循环获取)
def array():
for i in range(1, 11):
yield i
start = array()
print(next(start), next(start), next(start), next(start),
next(start), next(start), next(start), next(start),
next(start), next(start), sep='\t')
print(type(start))
结果如下:
二.模拟range的功能,自己建立一个range:
range(10)
range(1, 10)
range(1, 10, 1) =>
start, stop, step
range(10, 1, -1)
range(10, -1, -1)
range(-10, -1, 1)
range(-1, -10, -1)
class CustomRange:
def __init__(self, start, stop=None, step=1):
if step == 0:
raise ValueError('The entered step size cannot be zero')
if stop is None:
start, stop = 0, start
if step > 0:
self.__length = max(0, ((stop - start - 1) // step) + 1)
else:
self.__length = max(0, ((start - stop - 1) // abs(step)) + 1)
self.__start = start
self.__stop = stop
self.__step = step
def __iter__(self):
num = self.__start
if self.__step > 0:
while num < self.__stop:
yield num
num += self.__step
else:
while num > self.__stop:
yield num
num += self.__step
def __len__(self):
return self.__length
def __getitem__(self, item):
if item < 0:
item += self.__length
if 0 <= item <= self.__length:
return self.__start + item * self.__step
else:
raise IndexError('Range object index out of range')
定义好后进行测试,print过程中与range()函数进行比对,结果如下:
print(list(CustomRange(10)), list(range(10)), sep='\n')
print(list(CustomRange(1, 10)), list(range(1, 10)), sep='\n')
print(list(CustomRange(1, 10, 1)), list(range(1, 10, 1)), sep='\n')
print(list(CustomRange(10, 1, -1)), list(range(10, 1, -1)), sep='\n')
print(list(CustomRange(10, -1, -1)), list(range(10, -1, -1)), sep='\n')
print(list(CustomRange(-10, -1, 1)), list(range(-10, -1, 1)), sep='\n')
print(list(CustomRange(-1, -10, -1)), list(range(-1, -10, -1)), sep='\n')
三. re中函数的使用(自己写用例来使用):
首先导入re模块:
import re
match
pattern = "Think you"
string = "Think you very much"
result = re.match(pattern, string)
print(result, type(result), sep='\n')
fullmatch
pattern = "Think you"
string = "Think you"
result = re.fullmatch(pattern, string)
print(result, type(result), sep='\n')
search
pattern = "think you"
string = "he think you"
result = re.search(pattern, string)
print(result, type(result), sep='\n')
findall
pattern = "you"
string = "you think you"
result = re.findall(pattern, string)
print(result, type(result), sep='\n')
finditer
pattern = "123"
string = "123abc123"
result = re.finditer(pattern, string)
print(result, type(result), sep='\n')
split
pattern = "abc"
string = "123abc456abc789"
result = re.split(pattern, string)
print(result, type(result), sep='\n')
sub
pattern = "abc"
string = "123abc456abc789"
result1 = re.sub(pattern, '-', string)
result2 = re.sub(pattern, '-', string, count=1)
result3 = re.sub(pattern, '-', string, count=2)
print(result1, result2, result3,type(result1), sep='\n')
subn
pattern = "abc"
string = "123abc456abc789"
result1 = re.subn(pattern, '-', string)
result2 = re.subn(pattern, '-', string, count=1)
result3 = re.subn(pattern, '-', string, count=2)
print(result1, result2, result3,type(result1), sep='\n')
complie
pattern = "abc"
string = "123abc456abc789"
result = re.compile(pattern, flags=2)
print(result, type(result), sep='\n')
print(result.search(string))
print(result.findall(string))
print(result.split(string))