Martijn Pieters による回答。ありがとうございました。
それは、ステートメント対表現だからです。また、 .join() は変更されない (純粋な関数である) ため、変数に割り当てる必要があります。
質問:
この奇妙さの理由は何ですか?
ゴール:
if base == 'T':
RNA_seq += 'U'
else:
RNA_seq += base
この次の方法が機能します。
# += in expression1 and .join() in expression2
RNA_seq += 'U' if base == 'T' else RNA_seq.join(base)
# Edit note: RNA_seq.join(base) works because it returns `base`
# aka. RNA_seq += 'U' if base == 'T' else base
ただし、以下は機能しません。
# Using += on both expressions
RNA_seq += 'U' if base == 'T' else RNA_seq += base
また
# Using .join() for both expressions
RNA_seq.join('U') if base == 'T' else RNA_seq.join(base)
結果は、Python2 と Python3 の両方で同じです。