Конкретная проблема уже решена в предыдущих ответах, поэтому я обращусь к общей идее использования условностей внутри понятий списка.
Вот пример, показывающий, как условные обозначения могут быть записаны внутри понимания списка :
X = [1.5, 2.3, 4.4, 5.4, 'n', 1.5, 5.1, 'a'] # Original list
# Extract non-strings from X to new list
X_non_str = [el for el in X if not isinstance(el, str)] # When using only 'if', put 'for' in the beginning
# Change all strings in X to 'b', preserve everything else as is
X_str_changed = ['b' if isinstance(el, str) else el for el in X] # When using 'if' and 'else', put 'for' in the end
Обратите внимание, что в первом понимании списка для X_non_str
порядок:
значение для выражения 1 , если expression2
blockquote>и в последнем понимании списка для
X_str_changed
порядок:value1 , если expression1 else значение2 для expression2
blockquote>Мне всегда трудно помнить, что значение 1 должно быть раньше, если и значение2 должно быть после. Моя голова хочет, чтобы оба были либо до, либо после.
Я предполагаю, что он создан так, потому что он похож на обычный язык, например. «Я хочу остаться внутри, если идет дождь, иначе я хочу выйти на улицу»
И ответ похож так:
def check_commit_msg(local, master, old_revno, old_revid, new_revno, new_revid):
branch = local or master
revision = branch.repository.get_revision(new_revid)
print revision.message
локальный и основной объекты Ответвления, поэтому после того как у Вас есть пересмотр, легко извлечь сообщение.