以前のもののプロパティに基づいて、リストのいくつかの要素を変更しようとしています。中間変数を割り当てる必要があるため、リスト内包表記としてこれを行うことはできないと思います。コメント付きの次のコードは、私が達成しようとしているものです。
for H in header:
if "lower" in H.lower():
pref="lower"
elif "higher" in H.lower():
pref="higher"
if header.count(H) > 1:
# change H inplace
H = pref+H
私が思いついた最善の解決策は次のとおりです。
for ii,H in enumerate(header):
if "lower" in H.lower():
pref="lower"
elif "higher" in H.lower():
pref="higher"
if header.count(H) > 1:
header[ii] = pref+H
それはうまく機能せず、インデックス付けのために私にはPythonicではないように感じます。これを行うより良い方法はありますか?
具体例:
header = ['LowerLevel','Term','J','UpperLevel','Term','J']
望ましい出力:
header = ['LowerLevel','LowerTerm','LowerJ','UpperLevel','UpperTerm','UpperJ']
私の解決策はどちらも機能しないことに注意してください。前者はまったく変更されず、後者は変更後に間違っている
ためheader
返されるだけです。
header = ['LowerLevel','LowerTerm','LowerJ','UpperLevel','Term','J']
count