^(?:(\d+)\.)?(?:(\d+)\.)?(\*|\d+)$
, Возможно, более краткий мог быть:
^(?:(\d+)\.){0,2}(\*|\d+)$
Это может тогда быть улучшено к 1.2.3.4.5.* или ограниченный точно X.Y.Z, использующим * или {2} вместо {0,2}
Ага, _
- традиционное название для «безразлично» (что, к сожалению, противоречит его использованию в I18N, но это отдельная проблема ;-). Кстати, в сегодняшнем Python вместо:
_,s = min( (len( values[s]), s)
for s in squares
if len(values[s]) > 1
)
вы можете кодировать
s = min((s for s in squares if len(values[s])>1),
key=lambda s: len(values[s]))
(не уверен, для какой версии Python писал Питер, но идиома, которую он использует, является примером «decorate-sort-undecorate» [[DSU] ] за исключением min вместо sort, а в сегодняшнем Python необязательный параметр key =
обычно является лучшим способом выполнения DSU; -).
Вы являетесь верный. В неинтерактивном режиме _
не имеет особого значения. В самом деле, Норвиг просто хочет показать, что его не волнует значение этой переменной.
Offtopic: Эта статья Норвига очень хороша. Рекомендуемое чтение.
Ваша интерпретация верна. Вне специального значения в интерактивном режиме _
используется просто как имя переменной «безразлично», особенно при распаковке.