[python] 파이썬에서 목록 이해 또는 생성기 표현식에 대한 줄 연속

매우 긴 목록 이해력을 어떻게 분리해야합니까?

[something_that_is_pretty_long for something_that_is_pretty_long in somethings_that_are_pretty_long]

나는 또한 사람들이 줄을 끊기 위해 ‘\’를 사용하는 것을 싫어하지만 그 이유를 이해하지 못하는 곳을 본 적이 있습니다. 그 이유는 무엇입니까?



답변

[x
 for
 x
 in
 (1,2,3)
]

잘 작동하므로 원하는대로 거의 할 수 있습니다. 나는 개인적으로 선호한다

 [something_that_is_pretty_long
  for something_that_is_pretty_long
  in somethings_that_are_pretty_long]

\그다지 높이 평가되지 않는 이유 는 그것이 눈에 띄지 않거나 추가 패딩이 필요한 라인 의 끝에 나타나기 때문입니다. 이는 라인 길이가 변경 될 때 수정해야합니다.

x = very_long_term                     \
  + even_longer_term_than_the_previous \
  + a_third_term

이러한 경우 괄호를 사용하십시오.

x = (very_long_term
     + even_longer_term_than_the_previous
     + a_third_term)


답변

나는 반대하지 않는다 :

variable = [something_that_is_pretty_long
            for something_that_is_pretty_long
            in somethings_that_are_pretty_long]

\이 경우에는 필요하지 않습니다 . 일반적으로 나는 사람들 \이 약간 못 생기기 때문에 피한다고 생각 하지만, 이것이 줄의 마지막 일이 아니라면 문제를 일으킬 수도 있습니다 (그 뒤에 공백이 없는지 확인하십시오). 줄 길이를 줄이려면 사용하지 않는 것보다 사용하는 것이 훨씬 낫다고 생각합니다.

\위의 경우 나 괄호로 묶인 표현에서는 필요하지 않기 때문에 실제로 사용해야하는 경우도 매우 드뭅니다.


답변

여러 데이터 구조 목록을 처리하는 경우 여러 들여 쓰기를 사용할 수도 있습니다.

new_list = [
    {
        'attribute 1': a_very_long_item.attribute1,
        'attribute 2': a_very_long_item.attribute2,
        'list_attribute': [
            {
                'dict_key_1': attribute_item.attribute2,
                'dict_key_2': attribute_item.attribute2
            }
            for attribute_item
            in a_very_long_item.list_of_items
         ]
    }
    for a_very_long_item
    in a_very_long_list
    if a_very_long_item not in [some_other_long_item
        for some_other_long_item
        in some_other_long_list
    ]
]

if 문을 사용하여 다른 목록으로 필터링하는 방법에 주목하십시오. if 문을 자체 줄로 삭제하는 것도 유용합니다.


답변