我正在遍历许多可能(非常不相关)参数的所有组合。如果我们有7个这样的参数,我们可能会有像
这样的东西fruit_list = ['apple', 'banana']
letter_list = ['a', 'b', 'c', 'd']
class_list = [SomeClass, AnotherClass]
list_list = ...
dict_list = ...
animal_list = ...
language_list = ...
combinations = itertools.product(fruit_list, letter_list, ...)
for i, (fruit, letter, class_, list_, dict_, animal, language) in enumerate(combinations):
...
两个问题:首先,是否有一种更规范的方式来做到这一点?我们可以有许多嵌套for循环,但这同样粗略。其次,如果我们坚持这个,那么在for循环中打破元组最好的样式是什么?我不认为这与PEP 8中的任何内容相符。
答案 0 :(得分:4)
打破循环中的元组看起来更好:
animations
答案 1 :(得分:1)
我总是这样做的方式是这样的:
for i, (
fruit,
letter,
...
language) in enumerate(combinations):
...
答案 2 :(得分:1)
PEP8提供了类似情况here和here的示例。 它更倾向于使用括号而不是反斜杠:
包装长行的首选方法是使用Python隐含的方法 括号,括号和括号内的行继续。排长龙 可以通过包装表达式来分解多行 括弧。这些应该优先使用反斜杠 换行。
所以,关于你的代码:一旦该行达到79个字符,在括号中的逗号之后将其断开并开始一个新行,将其与左括号对齐,或者使用双缩进(即8个空格)以免混淆for
声明及其正文。但是,与括号对齐是首选方式。
在这个特定的例子中,包装如下:
for i, (fruit, letter, class_, list_, dict_, animal, language) in
enumerate(combinations):
...
考虑到你可能需要打破长元组,例如:
for i, (fruit, letter, class_,
list_, dict_, animal, language
) in enumerate(combinations):
...