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


102

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

[something_that_is_pretty_long for something_that_is_pretty_long in somethings_that_are_pretty_long]

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


답변:


143
[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)

47
특히, 줄 바꿈은 내부 무시되고 있는 브라켓 - (), []하고 {}.

23

나는 반대하지 않는다 :

variable = [something_that_is_pretty_long
            for something_that_is_pretty_long
            in somethings_that_are_pretty_long]

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

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


20

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

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 문을 자체 줄로 삭제하는 것도 유용합니다.


1
나는 루프에 대한 중첩 목록 이해를 포함하여 줄 바꿈의 몇 가지 일반적인 측면을 보여주기 때문에이 답변을 특히 좋아합니다 for.
gustafbstrom 2019
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.