В том числе если в массивах сформировано использование для

1

В Python у меня есть это утверждение:

blog_ids = [c.blog_id for c in connections]

Что в основном говорит Python о создании массива всех идентификаторов блога в соединениях. К сожалению, если объект connections имеет несколько типов None, c.blog_id приведет к исключению. Есть ли синтаксис для решения этой проблемы? Я пробовал это, но он не работает:

blog_ids = [c.blog_id for c not None in connections]
Теги:

2 ответа

8
Лучший ответ
blog_ids = [c.blog_id for c in connections if c is not None]
  • 0
    Который может быть сокращен до [c.blog_id for c in connections if c] если вы знаете, что connections только None или допустимые значения.
  • 0
    Благодарю. Но каков синтаксис для таких утверждений? Являются ли они просто специальным синтаксисом для операторов for и if? В словах, мы можем сформировать более сложные утверждения, основанные на некотором синтаксисе?
Показать ещё 2 комментария
0

Здесь, вероятно, стоит спросить, какие объекты у вас есть в вашем объекте connections. Являются ли они либо действительными объектами с атрибутом blog_id, либо объектами None. Или есть вероятность, что среди этих объектов есть и другие объекты (помимо объектов None) без атрибута blog_id.

  • 0
    Это хороший момент, но да, это либо действительные объекты с атрибутом blog_id, либо объекты None. На самом деле они возвращаются с помощью оператора Google AppEngine для класса Connection, поэтому они либо действительны, либо None, если какой-то ключ недействителен.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню