programing

python에서 목록 이해 또는 생성자 표현식에 대한 줄 연속

megabox 2023. 10. 26. 20:55
반응형

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)

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

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 문을 자신의 행으로 드롭하는 것도 유용합니다.

저는 반대하지 않습니다.

variable = [something_that_is_pretty_long
            for something_that_is_pretty_long
            in somethings_that_are_pretty_long]

필요없습니다\이 경우에는일반적으로 사람들은 피한다고 생각합니다.\약간 못생겼지만 마지막이 아니면 문제가 생길 수도 있기 때문입니다(백공백이 따라가지 않도록 해야 함).그래도 라인을 길게 유지하기 위해서는 안 쓰는 것보다는 쓰는 게 훨씬 나을 것 같아요.

부터\위의 경우에는 필요하지 않습니다. 또는 괄호가 쳐진 표현의 경우, 실제로 사용해야 하는 경우는 상당히 드물다고 생각합니다.

나는 당신이 이 경우에 목록 이해를 사용해서는 안되고 대신에 a를 사용해야 한다고 주장하고 싶습니다.for루프:

result = []
for something_that_is_pretty_long in somethings_that_are_pretty_long:
    result.append(something_that_is_pretty_long)

목록 이해를 사용해야 하는 한 가지 이유for루프 +.append()그것은 그것이 명시적인 것을 사용하는 것보다 훨씬 더 간결할 수 있다는 것입니다.forloop. 그러나 목록 이해가 여러 줄로 나누어져야 할 때, 그 간결함은 표현을 읽기 매우 어렵게 만들 수 있습니다.

PEP8이 여러 줄의 목록 이해를 명시적으로 금지하지는 않지만 Google Python Style Guide에서는 목록 이해의 각 부분이 한 줄에 맞도록 요구합니다(강조 표시).

2.7 이해 및 생성자 표현

간단한 케이스에 사용해도 좋습니다.부분은 매핑 식, 절의 경우 필터 식과 같은맞아야 합니다.절 또는 필터 식을 여러 개 사용할 수 없습니다.일이 복잡해지면 대신 루프를 사용하세요.

언급URL : https://stackoverflow.com/questions/5809059/line-continuation-for-list-comprehensions-or-generator-expressions-in-python

반응형