python基础--高级特性

切片(Slice)

  1. 切片:获取 字符串|列表|元组 的一部分
  2. 切片的表示:str[first:end],list[first:end],tuple[first:end]
  3. 切片的功能:获取索引从first到end之间的元素,包括左边不包括右边
  4. 副本:使用 [:] 获取原始的副本,对副本的操作不影响原始
  5. 切片的参数:[first🔚step]
    1. first:首索引
    2. end:尾索引
    3. 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])

列表生成式

  1. 列表生成式:是用于创建列表的生成式。
  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

迭代

  1. 使用for循环遍历list|tuple,这种遍历就是迭代。
  2. 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)

  1. 生成器:一边循环,一边计算的机制。
  2. 创建生成器:
    1. 把列表生成式的 []-->()
    2. 如果一个函数中包含 yield关键字,那么这个函数就不再是一个普通函数,而是一个生成器函数。
      1. 函数顺序执行,遇到 return语句或者最后一行函数语句就返回。
      2. 而变成 generator后,在每次调用 next()后执行,遇到 yield语句返回,再次执行从上次返回的 yield语句处继续执行。
  3. 获取生成器的每个元素:
    1. 使用:next(genetator)获取下一个返回值,但是太麻烦。
      1. next()获取生成器的下一个值,直到没有元素时,抛出 StopIteration
      2. 获取最后一个值,使用 try-catch 捕获异常,然后获取异常的值
    2. 使用: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)

  1. 迭代器:
    1. 可迭代对象:可以直接作用于 for 循环的对象。
      1. isinstance(obj,Iterable):判断对象是否是可迭代对象
    2. 迭代器:可以被 next() 函数调用并且不断返回下一个值的对象
#判断一个对象是否是可迭代对象:
from collections.abc import Iterable
isinstance([],Iterable)

posted on 2021-05-04 11:32  拾亿~  阅读(58)  评论(0)    收藏  举报

导航