非常に長いリスト内包表記をどのように分割することになっていますか?
[something_that_is_pretty_long for something_that_is_pretty_long in somethings_that_are_pretty_long]
また、行を分割するために「\」を使用することを嫌う人々がどこかで見たことがありますが、その理由は理解できませんでした。この背後にある理由は何ですか?
非常に長いリスト内包表記をどのように分割することになっていますか?
[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
このような場合は、parensを使用してください。
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]
この場合は必要ありません\
。\
一般的に、少し醜いので避ける人が多いと思いますが、行の最後の部分でない場合は問題が発生する可能性があります (その後に空白がないことを確認してください)。ただし、行の長さを抑えるためには、使用しないよりは使用する方がはるかに優れていると思います。
上記\
の場合、または括弧で囲まれた式の場合は必要ないため、実際に使用する必要があることはかなりまれです。