リスト1のアイテムがリスト2にあるかどうかをチェックしようとしています。それに「_」を付けることによって)。リスト1の項目は元の順序にとどまらなければならないという警告があります。私はネストされたforループと列挙でこれを行う方法を考え出しましたが、より効率的な/より速いメソッドがあるかどうか、おそらくリストの理解やマップが適切かどうか疑問に思っていましたか?前もって感謝します。Python:リストを使用して別々のリスト内のアイテムをチェックし、存在する場合は置換する
リストは以下のとおりです。
headers = ['Date', 'Temp', 'Descrip', 'ID', 'Lat', 'Long', 'FID']
replace = ['Date', 'ID', 'FID']
私が使用しているコードは次のとおりです。
for rep in replace:
for index, head in enumerate(headers):
if rep == head:
headers[ index ] = headers[ index ] + '_'
答えは次のようになります。
['Date_', 'Temp', 'Descrip', 'ID_', 'Lat', 'Long', 'FID_']
ありがとう。はい、これは私のために働く。私は新しいリストを作成することにあまり心配していませんが、長い/明示的なforループを使わなくてもいいです。私はPythonがRubyに似た方法を持っていたらいいと思う。私はあなたのコメントに関して1つの質問を持っています。なぜ私はセットを使用する必要がありますか?私が理解しているように、「設定されていれば」冗長性がなくなります。私が紛失しているものはありますか? – 9monkeys
'' + '_ ''を.join([s、 "_"]) 'で置き換えると、かなりの余分なパフォーマンスを得ることができますか? – riza
@ 9monkeys:メンバーシップテストは大きなリストよりも大きなセットではかなり高速です - 私は自分の答えにコメントを追加しました。 –