[英]Could someone explain me this strange Python for loop?
我忙于一个项目,我找到了一个完全符合我要求的代码,但是有些部分我不明白,你们中的一些人可以解释一下吗? 这是我找到的代码:
from pynput import keyboard
from pynput.keyboard import Controller
keypress = Controller()
COMBINATIONS = [
{keyboard.KeyCode(char='a'), keyboard.KeyCode(char='z')},
]
current = set()
def execute():
for loop in range(0, 10):
keypress.press('w')
keypress.release('w')
def on_press(key):
if any([key in COMBO for COMBO in COMBINATIONS]): # THIS PART
current.add(key)
print(current)
if any(all(k in current for k in COMBO) for COMBO in COMBINATIONS): #THIS PART
execute()
def on_release(key):
if any([key in COMBO for COMBO in COMBINATIONS]): #THIS PART
current.remove(key)
with keyboard.Listener(on_press=on_press, on_release=on_release) as listener:
listener.join()
我用#THIS PART
表扬评论了我不理解的部分 感谢您的帮助:)
这个问题的答案可以分为两部分:
首先,列表理解:这是一种在一行中编写for
循环的方法。 所以,而不是写:
result = []
for COMBO in COMBINATIONS:
result.append(key in COMBO)
你可以像这样写成一行:
result = [key in COMBO for COMBO in COMBINATIONS]
如您所见, result
是 boolean 值的列表...... True
或False
。 这带来了第二部分;
第二部分是 function any()
。 如果True
True
如果没有给定的项目是True
,则为False
。
所以,你的问题的答案是这部分:
any([key in COMBO for COMBO in COMBINATIONS])
它检查key
是否存在于给定COMBINATION
的任何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')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.