簡體   English   中英

有人可以向我解釋這個奇怪的 Python for loop 嗎?

[英]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表揚評論了我不理解的部分 感謝您的幫助:)

這個問題的答案可以分為兩部分:

1.列表理解:

首先,列表理解:這是一種在一行中編寫for循環的方法。 所以,而不是寫:

result = []
for COMBO in COMBINATIONS:
    result.append(key in COMBO)

你可以像這樣寫成一行:

result = [key in COMBO for COMBO in COMBINATIONS]

如您所見, result是 boolean 值的列表...... TrueFalse 這帶來了第二部分;

2.任何() function

第二部分是 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM