python迭代器及递归

1.可迭代对象有且不限:

list,dict,str,set,tuple

查看是否是可迭代对象方式:

print(dir(list))

#输出list所有的方法,其中包含__iter__()方法就是可迭代对象

可迭代对象的好处:
使用灵活、直接查看值
缺点:消耗内存

2.迭代器:
官方声明只要具有__iter__()方法、next()方法就是迭代器

f = open("aaaa","w")

f.__iter__()
f.__next__()

#文件句柄就是迭代器

3.可迭代对象转换成迭代器

list = [1,2,3,4,5]
new_list = list.__iter__()

#用__iter__()方法 

迭代器取值:

list = [1,2,3,4,5]
new_list = list.__iter__()

print(new_list.__next__())
print(new_list.__next__())
print(new_list.__next__())
list = [1,2,3,4,5]
new_list = list.__iter__()

count = len(list)
while count:
    print(new_list.__next__())
    count -= 1
s = "12345689"
new_s =  s.__iter__()

while True:
    try:
        print(new_s.__next__())
    except StopIteration:
        exit

4.递归
自己调用自己

def func(a):
    a -= 1
    if a == 0:
        return 18
    else:
        return func(a)+2

print(func(5))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您解答关于、装饰和冒泡排序的问题。 首先,是一种可以遍历一个容中元素的对象,例如列表或字典。要实现一个,可以定义一个包含 `__iter__()` 和 `__next__()` 方法的类。`__iter__()` 方法返回对象本身,而 `__next__()` 方法返回下一个元素。 接下来是装饰。装饰是一种函数或类,用于包装其他函数或类并修改它们的行为。装饰函数需要在函数定义之前加上 `@decorator_name` 的语法糖。其作用是不改变源代码的情况下对函数进行增强。 最后是冒泡排序的归实现。冒泡排序是一种简单的排序算法,基本思想是重复地交换相邻的未按顺序排列的元素。归实现就是把排序过程分解为更小的子问题,直到子问题可以直接解决为止。 下面是和装饰归实现冒泡排序的 Python 代码: ```python # 定义 class MyIterator: def __init__(self, my_list): self.list = my_list self.idx = 0 def __iter__(self): return self def __next__(self): if self.idx == len(self.list): raise StopIteration else: self.idx += 1 return self.list[self.idx-1] # 定义装饰 def my_decorator(func): def wrapper(*args, **kwargs): print("Before function is executed.") result = func(*args, **kwargs) print("After function is executed.") return result return wrapper # 归实现冒泡排序 @my_decorator def recursive_bubble_sort(l): for i, num in enumerate(l[:-1]): if num > l[i+1]: l[i], l[i+1] = l[i+1], l[i] if len(l) > 1: recursive_bubble_sort(l[:-1]) return l ``` 希望这些信息能够帮助到您,如果您需要进一步的解释,请随时询问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值