Kontynuacja linii dla kompilacji list lub wyrażeń generatora w Pythonie
Jak masz zerwać bardzo długą listę zrozumienia?
[something_that_is_pretty_long for something_that_is_pretty_long in somethings_that_are_pretty_long]
Widziałem też gdzieś, że ludzie, którzy nie lubią używać '\' do rozbijania linii, ale nigdy nie rozumiałem dlaczego. Jaki jest tego powód?
3 answers
[x
for
x
in
(1,2,3)
]
Działa dobrze, więc możesz robić, co chcesz. Ja osobiście wolę
[something_that_is_pretty_long
for something_that_is_pretty_long
in somethings_that_are_pretty_long]
Powodem, dla którego \
nie jest bardzo doceniany, jest to, że pojawia się na końcu linii, gdzie albo się nie wyróżnia, albo wymaga dodatkowej wyściółki, która musi być ustalona przy zmianie długości linii:
x = very_long_term \
+ even_longer_term_than_the_previous \
+ a_third_term
W takich przypadkach użyj parens:
x = (very_long_term
+ even_longer_term_than_the_previous
+ a_third_term)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-27 14:48:10
Nie jestem przeciwny:
variable = [something_that_is_pretty_long
for something_that_is_pretty_long
in somethings_that_are_pretty_long]
Nie potrzebujesz \
w tym przypadku. Ogólnie rzecz biorąc, myślę, że ludzie unikają \
, ponieważ jest nieco brzydki, ale również może powodować problemy, jeśli nie jest to ostatnia rzecz na linii(upewnij się, że żadne białe znaki nie podążają za nią). Myślę, że o wiele lepiej jest go użyć, niż nie, aby utrzymać długość linii w dół.
Ponieważ \
nie jest konieczne w powyższym przypadku, lub dla wyrażeń w nawiasach, uważam, że jest to dość rzadkie, że nawet muszę używać to.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-27 18:58:15
Możesz również korzystać z wielu wcięć w przypadkach, gdy masz do czynienia z listą kilku struktur danych.
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
]
]
Zauważ, jak filtruje również na innej liście używając instrukcji if. Przydatne jest również upuszczenie instrukcji if do własnej linii.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-30 20:06:59