目录
def forl(iterable):
iterator = iterable.__iter__()
while True:
try:
print(iterator.__next__())
except Exception as e:
print(e)
break
forl([1,2,3,4,5,6,7,8,9])
__iter__
方法的对象__iter__
方法的对象__iter__
方法得到的返回值,并且可迭代对象会有一个__next___
方法__next__
方法,执行该方法会拿到迭代器对象中一个值__iter__
方法,执行该方法会拿到迭代器本身len()
方法获取长度__iter__
后还是迭代器本身,因此for循环不用考虑in后面的对象是可迭代对象还是迭代器对象__iter__
方法后变成一个可迭代器对象,这个迭代器对象只是占用了一小块内存空间,只有使用__next__
后才会取出一个值。x = 20
y = 10
print(f"x if x > y else y: {x if x >y else: y}")
it = [i for i in range(10)]
it = [i**2 for i in range(10)]
# i**2 -->改变 ,range(n) --可迭代对象
print(it)
dic = {}
dic = {i:i*2 for i in range(10)}
print(dic)
it1 = ['a','b','c']
it2 = ['1','2','3']
dic = {k: v for k,v in zip(it1,it2)}
print(dic)
for -- 循环内有常处理
t = (i for i in range(10))
print(t)
print(f"next(t): {next(t)}”)
import sys
sys.setrecursionlimit(10000)
def foo(n):
print('from foo',n)
foo(n+1)
foo(0)
nums = [1,3,7,11,22,34,55,78,111,115]
for item in nums:
if item == 10:
print('find it')
break
else:
print('not exists')
列表元素多:--二分查找
def search(search_num, nums):
mid_index = len(nums)//2
print(nums)
if not nums:
print('not exists')
return
if search_num > nums[mid_index]:
# in the right
nums = nums[mid_index+1:] #切片
search(search_num, nums)
elif search_num < nums[mid_index]:
# in the left
nums = nums[:mid_index]
search(search_num, nums)
else:
print('find it')
search(7, nums)
原文:https://www.cnblogs.com/shaozheng/p/11578707.html