История изменений
Исправление praseodim, (текущая версия) :
Для тебя «контринтуитивно» что переменная должна быть инициализирована прежде чем использована? Ну тогда у меня для тебя плохие новости.
Нет, контринтуитивно не это, а то что в коде
s = {i: 0 for i in list}
s = {i: s[i]+1 for i in list}
s[i]+1
делает совсем не то, что ожидалось на первый взгляд.
Хотя и насчет инициализации, не все так просто. Раз уж питон автоматически создает переменные при первом присвании, кроме того, например, в Perl конструкции $hash($i)++ вполне нормально работает для еще не использованного ключа и делает ровно то, что ожидается. Еще попадались контринтуитивные вещи со слайсами и с увеличением/уменьшением размерности массивов.
Исходная версия praseodim, :
Для тебя «контринтуитивно» что переменная должна быть инициализирована прежде чем использована? Ну тогда у меня для тебя плохие новости.
Нет, контринтуитивно не это, а то что в коде
s = {i: 0 for i in list}
s = {i: s[i]+1 for i in list}
s+1 делает совсем не то, что ожидалось на первый взгляд.
Хотя и насчет инициализации, не все так просто. Раз уж питон автоматически создает переменные при первом присвании, кроме того, например, в Perl конструкции $hash($i)++ вполне нормально работает для еще не использованного ключа и делает ровно то, что ожидается. Еще попадались контринтуитивные вещи со слайсами и с увеличением/уменьшением размерности массивов.