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()
그것은 그것이 명시적인 것을 사용하는 것보다 훨씬 더 간결할 수 있다는 것입니다.for
loop. 그러나 목록 이해가 여러 줄로 나누어져야 할 때, 그 간결함은 표현을 읽기 매우 어렵게 만들 수 있습니다.
PEP8이 여러 줄의 목록 이해를 명시적으로 금지하지는 않지만 Google Python Style Guide에서는 목록 이해의 각 부분이 한 줄에 맞도록 요구합니다(강조 표시).
2.7 이해 및 생성자 표현
간단한 케이스에 사용해도 좋습니다.각 부분은 매핑 식, 절의 경우 필터 식과 같은 한 줄에 맞아야 합니다.절 또는 필터 식을 여러 개 사용할 수 없습니다.일이 복잡해지면 대신 루프를 사용하세요.
언급URL : https://stackoverflow.com/questions/5809059/line-continuation-for-list-comprehensions-or-generator-expressions-in-python
'programing' 카테고리의 다른 글
WooCommerce 체크아웃 사용자 정의 텍스트 필드에서 Datepicker 사용 (0) | 2023.10.26 |
---|---|
컴팩트한 쓰기 방식 (a + b == c 또는 a + c == b 또는 b + c == a) (0) | 2023.10.26 |
지정된 인증서를 사용한 Java MySQL SSL 연결 (0) | 2023.10.26 |
C에서 명시적 폴스루를 하는 방법 (0) | 2023.10.21 |
구글 플레이 스토어는 AV 에뮬레이터에서 지원됩니까? (0) | 2023.10.21 |