生成器与for循环的纠葛

Posted cnhk1949

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了生成器与for循环的纠葛相关的知识,希望对你有一定的参考价值。

我先放例题了

v = [lambda :x for x in range(10)]
print(v)
print(v[0])
print(v[0]())

lambda   参数  :返回值

拆解:

f = lambda   :x for x in range(10)   

现在我们称 f 这个函数  参数为零  返回值是 x for  x in  range(10)

print(lambda :x for x in range(10))
#结果 <generator object <genexpr> at 0x037B6900>

上面这个是一个已经循环完了的生成器

 

 

例题

登陆注册 

在读取文件内容时,可以用生成器

# import hashlib
# import os
# def open_file():
#     with open(‘info‘,encoding=‘utf-8‘) as f1:
#         for line in f1:
#             v1,v2 = line.split(‘ ‘)
#             yield v1,v2  这里
# def md5(password):
#     md5 = hashlib.md5(‘*‘.encode(‘utf-8‘))
#     md5.update(password.encode(‘utf-8‘))
#     return md5.hexdigest()
# def register():
#     user = input(‘user‘)
#     psw = input(‘password‘)
#     for username,password in open_file(): 这里
#         if user == username:
#             print(‘用户名已经存在‘)
#             break
#     else:
#         with open(‘info‘,‘a‘,encoding=‘utf-8‘) as f2:
#             f2.write(user+‘ ‘)
#             f2.write(md5(psw))
#     print(‘注册成功‘)
# def login():
#     user = input(‘user‘)
#     psw = input(‘password‘)
#     for username,password in open_file():   这里
#         if user == username and md5(psw) == password:
#             print(‘登陆成功‘)
#             break
#     else:
#         print(‘登陆错误,没有找到用户名‘)
# register()
# login()

 

以上是关于生成器与for循环的纠葛的主要内容,如果未能解决你的问题,请参考以下文章

Linux系统进程的知识总结,进程与线程之间的纠葛...

创建自己的代码片段(CodeSnippet)

c_cpp 这个简单的代码片段显示了如何使用有符号整数在C中完成插值。 for()循环确定要插入的范围

如何使用 .join 和 for 循环制作随机十六进制代码生成器?

在 Activity 内部,如何暂停 for 循环以调用片段,然后在按钮单击片段后恢复循环以重新开始

python中的while循环与for循环怎么样那个比较好用?