[英]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.