有人能给我解释一下这个奇怪的Python for循环吗?

有人能给我解释一下这个奇怪的Python for循环吗?,python,pynput,Python,Pynput,我正忙于一个项目,我发现了一个完全符合我搜索的代码,但有些部分我不明白,你们中的一些人能解释一下吗?这是我找到的代码: 从pynput导入键盘 从pynput.keyboard导入控制器 按键=控制器() 组合=[ {keyboard.KeyCode(char='a')、keyboard.KeyCode(char='z')}, ] 当前=设置() def execute(): 对于范围(0,10)内的循环: 按键。按键('w') 按键释放(“w”) def on_按(键): 如果有([输入组合中

我正忙于一个项目,我发现了一个完全符合我搜索的代码,但有些部分我不明白,你们中的一些人能解释一下吗?这是我找到的代码:

从pynput导入键盘
从pynput.keyboard导入控制器
按键=控制器()
组合=[
{keyboard.KeyCode(char='a')、keyboard.KeyCode(char='z')},
]
当前=设置()
def execute():
对于范围(0,10)内的循环:
按键。按键('w')
按键释放(“w”)
def on_按(键):
如果有([输入组合中组合的组合]):#此部分
当前。添加(键)
打印(当前)
如果有(组合组合中的所有组合(当前组合中的k表示组合中的k表示组合中的k):#此部分
执行()
def on_释放(钥匙):
如果有([输入组合中组合的组合]):#此部分
当前。删除(键)
使用keyboard.Listener(on_press=on_press,on_release=on_release)作为侦听器:
listener.join()

我用
注释了我不理解的部分#此部分
感谢您的帮助:)

此问题的答案可分为两部分:

1.列表理解: 首先,列表理解:这是一种在一行中为循环编写
的方法。因此,与其写:

result = []
for COMBO in COMBINATIONS:
    result.append(key in COMBO)
您可以这样写在一行中:

result = [key in COMBO for COMBO in COMBINATIONS]
如您所见,
result
是一个布尔值列表。。。
True
False
。由此引出第二部分

2.功能 第二部分是函数
any()
。如果
True
中的某个给定项存在,则此函数返回
True
。和
False
如果给定项中的非项为
True


因此,你的问题的答案是这一部分:

any([key in COMBO for COMBO in COMBINATIONS])
它检查给定
组合
的任何
组合
中是否存在


希望这能回答你的问题

当我尝试在一个简单的代码中应用它时,我理解得更好。感谢您的精彩解释:)


你介意修复缩进吗?你在找我知道for循环如何工作,还有append函数,但是结果会怎样。append**(输入组合)**我不懂这部分?COMBO到底是什么?
COMBO
只是对
组合中的每个项目的迭代器。对于范围(0,10)
内的循环,其工作原理与
中的
循环
相同。在组合中运行组合:print(COMBO)
将向您展示组合的外观。非常感谢您的回答!你会把这个解释的标题改成什么,这样其他人就可以很容易地找到它。再次感谢你!
import os
Passwords = ["abcd", "efgh"]
inpt = input()


for List in Passwords:
    if (inpt in List) == True:
        print("Correct password! : True!")
        os.startfile('Chrome.exe')


if any([inpt in List for List in Passwords]):
    print("Correct password! : True!")
    os.startfile('Chrome.exe')