切片(Slice)
- 切片:获取 字符串|列表|元组 的一部分
- 切片的表示:str[first:end],list[first:end],tuple[first:end]
- 切片的功能:获取索引从first到end之间的元素,包括左边不包括右边
- 副本:使用
[:] 获取原始的副本,对副本的操作不影响原始
- 切片的参数:[first🔚step]
- first:首索引
- end:尾索引
- step:步长
#slice
# 字符串的切片:
str = "I can learn about knowleage of Python"
print(str[:])
print(str[:10])
print(str[1:])
print(str[1:4])
print(str[::3])
# 列表的切片:
list_ = [1,3,5,7,9,11,13,15]
print(list_[:])
print(list_[1:3])
print(list_[2:])
print(list_[:4])
print(list_[::2])
# 元组的切片:
tuple_ = (1,2,3,4,5,6,7,8,9,0)
print(tuple_[:])
print(tuple_[1:3])
print(tuple_[2:])
print(tuple_[:4])
print(tuple_[::2])
列表生成式
- 列表生成式:是用于创建列表的生成式。
- 列表生成式:
list_name=[expression for element in ]
# 列表生成式:
list_name = [l for l in range(1,10)]
print(list_name)
list_name = [l*s for l in range(1,10) for s in range(1,10)]
print(list_name)
list_name = [l*s for l in range(1,10) if l < 2 for s in range(11,100)]
print(list_name)
# 列表生成式之if-else
迭代
- 使用for循环遍历list|tuple,这种遍历就是迭代。
- Python中迭代使用
for...in...: 来完成的。
#迭代字符串:
string = "I like Python"
for s in string:
print(s,end='')
#迭代列表:
list_name = [1,3,5,6]
for l in list_name:
print(l)
#迭代元组:
tuple_name = (1,3,4,5)
for t in tuple_name:
print(t)
#迭代字典:
dict_name = {"name":"xwh","sex":"男","age":24}
for k,v in dict_name.items():
for k in dict_name.keys():
for v in dict_name.values():
print(k,v)
生成器(generator)
- 生成器:一边循环,一边计算的机制。
- 创建生成器:
- 把列表生成式的
[]-->()
- 如果一个函数中包含
yield关键字,那么这个函数就不再是一个普通函数,而是一个生成器函数。
- 函数顺序执行,遇到
return语句或者最后一行函数语句就返回。
- 而变成
generator后,在每次调用 next()后执行,遇到 yield语句返回,再次执行从上次返回的 yield语句处继续执行。
- 获取生成器的每个元素:
- 使用:
next(genetator)获取下一个返回值,但是太麻烦。
next()获取生成器的下一个值,直到没有元素时,抛出 StopIteration
- 获取最后一个值,使用
try-catch 捕获异常,然后获取异常的值
- 使用:
for遍历生成器。
# 创建生成器的方法1:
generator = (x*3 for x in range(1,4))
print(type(generator))
#输出N次,直到抛出StopIteration异常
print(next(generator))
# 创建生成器的方法2:
def fib(max):
#n:次数 a:前一个值 b:后一个值 max:最大次数
n,a,b = 0,0,1 #==> n=0,a=0,b=1
while n < max :
yield b
a,b = b,a+b
n += 1
return 'done'
#使用for遍历
for n in fib(9):
print(n)
迭代器(iterator)
- 迭代器:
- 可迭代对象:可以直接作用于
for 循环的对象。
isinstance(obj,Iterable):判断对象是否是可迭代对象
- 迭代器:可以被
next() 函数调用并且不断返回下一个值的对象
#判断一个对象是否是可迭代对象:
from collections.abc import Iterable
isinstance([],Iterable)