2014-11-06 3 views
-3

Я нашел код Python для игры в палач. Я прошел через следующую строку кода, и я не могу ее понять.Нужна помощь в понимании выражения Python

# here's the initial values of the variables 
guessWord = random.choice(listOfWords) 
blanks = "-" * len(guessWord) 
alreadyGuessed = set() 

# This is the line I fail to understand: 
blanks = "".join([char if char in alreadyGuessed else "-" for char in guessWord]) 

Я был бы рад, если вы объясните, что это используется.

+2

читать на списковых – acushner

+0

это 'полукокса, если символ в alreadyGuessed еще "-"' является тройной оператор – njzk2

+0

@ njzk2: это, конечно, условное выражение. –

ответ

0

Это условное выражение.

Это один лайнер, например:

l = [1,2,3,4] 
j = [1,3] 

res = [] 
for i in l: 
    if i in j: 
    res.append(i) 
    else: 
    res.append(None) 

Вы можете просто написать:

res = [i if i in j else None for i in l] 
+3

Фактически, он называется [условным выражение] (https://docs.python.org/3/reference/expressions.html#conditional-expressions). «Тернарный оператор» означает только оператор, который принимает три операнда. – iCodez

+0

Это один из нескольких троичных операторов. На данный момент у Python только один, но оператор SQL '... BETWEEN ... AND ...' является другим. Этот конкретный называется условным выражением *. –

+0

Только что видел ваши комментарии, согласился. Я редактировал свой ответ, поскольку он был действительно коротким. –

Смежные вопросы