生成器表达式/元组理解到hashes.text.splitlines()的for循环

2024-09-28 20:57:37 发布

您现在位置:Python中文网/ 问答频道 /正文

result with the original我正在尝试找出如何将下面的元组理解转换为for循环。在课堂视频中,这仅以以下方式完成。我已经向班上的discord寻求帮助和助教,但我没有得到任何我能理解的反馈。 编辑:是的,我知道我不应该使用相同的变量名。我已经在原稿和我的之间进行了注释和取消注释,这样我就不必经常更改下面的几行了。 ------------------这是原件-----------------

def get_password_leaks_count(hashes, hash_to_check):
    hashes = (line.split(':') for line in hashes.text.splitlines())
    print(hashes)
    for h, count in hashes:
        if h == hash_to_check:
            return count
    return 0
    print(h, count)

下面是我到目前为止所做的工作,但我甚至不确定我是否走上了正确的道路;我甚至不确定hash_to_check=[]是否应该存在

def get_password_leaks_count(hashes, hash_to_check):
    hashes = hashes.text.splitlines()
    for line in hashes:
        hashes = line.split(":")
        hashes = hash_to_check
        print(hashes)
        # for h, count in hashes:
        #     if h == hash_to_check:
        #         return count
        # return 0

Tags: toinforgetreturndefcheckcount
1条回答
网友
1楼 · 发布于 2024-09-28 20:57:37

代码很混乱,因为它重用了变量hashes。避免这种情况,并省略第一个print语句,该语句只打印生成器对象,而不打印它生成的值(我怀疑是否真的需要)。注意,我还省略了最后一个print,因为它紧跟着一个return语句,所以永远不会到达

def get_password_leaks_count(hashes, hash_to_check):
    for line in hashes.text.splitlines():
        for h, count in line.split(':'):
            if h == hash_to_check:
                return count
    return 0

顺便说一句,尽管问题的标题不同,你在原文中没有列表理解。相反,您有一个生成器表达式。对它进行迭代的效果与对列表理解生成的列表进行迭代的效果类似,但是为了避免在内存中创建不必要的临时列表,将使用生成器

相关问题 更多 >