回答:
主な利点は、複数行のリストを編集しやすくすることと、diffの乱雑さを減らすことです。
変化:
s = ['manny',
'mo',
'jack',
]
に:
s = ['manny',
'mo',
'jack',
'roger',
]
差分の1行の変更のみが含まれます。
s = ['manny',
'mo',
'jack',
+ 'roger',
]
これは、末尾のコンマが省略された場合の、より混乱する複数行の相違を打ち消します。
s = ['manny',
'mo',
- 'jack'
+ 'jack',
+ 'roger'
]
後者のdiffを使用すると、1行だけが追加され、他の行が内容を変更しなかったことがわかりにくくなります。
また、これを行うリスクも軽減されます。
s = ['manny',
'mo',
'jack'
'roger' # Added this line, but forgot to add a comma on the previous line
]
暗黙的な文字列リテラル連結をトリガーしs = ['manny', 'mo', 'jackroger']
、意図した結果の代わりに生成します。
List = "[" {Item ","} "]".
対List = "[" ({Item","}Item|)"]".
"\"item\","
を印刷"\"item\""
してから","
最後の項目を除いてすべて印刷するよりも、各項目を印刷する方がはるかに簡単です。
ある種のバグを取り除くのに役立ちます。複数行にリストを記述する方が明確な場合があります。ただし、後でメンテナンスを行って、アイテムを再配置することができます。
l1 = [
1,
2,
3,
4,
5
]
# Now you want to rearrange
l1 = [
1,
2,
3,
5
4,
]
# Now you have an error
ただし、末尾のコンマを許可して使用すると、エラーを発生させることなく、行を簡単に再配置できます。
タプルは('a')
、暗黙の継続と()
優先演算子としてs を使用して展開されるため、異なり('a',)
ますが、長さ1のタプルを参照します。
あなたの元の例は tuple('a')
('a'),
文字列です。しかし、私のポイントは、タプルの末尾のコンマは重要ですが、リストではそれらがまだPythonで受け入れられていないようです。
tuple('a')
一般的tuple(x)
に(x,)
は同じではないため、おそらく悪い例です。tuple('ab') != ('ab',)
。tuple('a') == ('a',)
理由だけで、'a'
長さ1の文字列である
>>> ("a",) == ("a")
False >>> ("ab",) == ("ab")
False >>> ("ab", "bc",) == ("ab", "bc")
True
主な理由は、diffの複雑さを軽減するためです。たとえば、あなたはリストを持っています:
list = [
'a',
'b',
'c'
]
別の要素を追加したいとします。次に、これを行うことになります:
list = [
'a',
'b',
'c',
'd'
]
したがって、diffは2つの行が変更されたことを示します。最初に「c」に合わせて「、」を追加し、最後の行に「d」を追加します。
そのため、pythonでは、リストの最後の要素の末尾に「、」を付けることで、混乱の原因となる余分なdiffを防ぐことができます。