Стиль Python: синтаксис for-in, проверка пустых списков и словарей - PullRequest
0 голосов
/ 03 октября 2010

Я новичок в python и еще не прочитал много кода, чтобы проверить, какие стили считаются "pythonic".

Когда я начал кодировать, я часто использовал этот шаблон.

listThatMightBeEmpty = []
for items in listThatMightBeEmpty:
    print "this may or may not print but the loop won't cause any errors"

Я предполагаю, что было бы избыточно сначала проверить, пуст ли список, - что я могу просто позволить циклу for-in ничего не делать, если список пуст. Но я хочу убедиться, что в любой ситуации нет ошибок, включая использование старых версий python, в том числе использование цикла for-in в словарях, использование enumerate () или iteritems (), использование списочных представлений и т. Д.

Ответы [ 3 ]

2 голосов
/ 03 октября 2010

Да, вы правы. Здесь нет ошибок Вы можете использовать его в пустом списке.

1 голос
/ 03 октября 2010

Да, это избыточно (если только вы не хотите выполнить что-то особенное для пустого ввода).

В общем случае, цикл и функция for, которые возвращают другую вещь, с которой вы можете перебирать, не будут«удивительное поведение», если у вас есть ввод нулевых элементов.Это включает в себя enumerate(), iteritems() и даже нарезку ([][1:] == []).

>>> list( enumerate([]) )
[]
>>> list( {}.iteritems() )
[]
>>> [][1:]
[]
>>> [x*x for x in []]
[]
1 голос
/ 03 октября 2010

Чтобы проверить, является ли список пустым, вы можете сделать следующее:

>>> x = []
>>> if not x:
         # do something

Если список пуст, запустится # do something, и вы сможете обработать выполнение там.Однако в вашем подходе нет ничего плохого.

...