Python:使用列表检查单独列表中的项目,如果存在则替换

9mo*_*eys 1 python replace list

我试图检查list-one中的项目是否在list-two中,如果是,则替换list-one中的项目(通过向其添加"_").需要注意的是,列表中的项目必须保持原始顺序.我已经找到了一种方法来使用嵌套的for循环和枚举,但我想知道是否有更高效/更快的方法,可能是列表理解或映射,如果合适的话?提前致谢.

清单是:

 headers = ['Date', 'Temp', 'Descrip', 'ID', 'Lat', 'Long', 'FID']
 replace = ['Date', 'ID', 'FID']
Run Code Online (Sandbox Code Playgroud)

我使用的代码是:

 for rep in replace:
         for index, head in enumerate(headers):
                 if rep == head:
                         headers[ index ] = headers[ index ] + '_'
Run Code Online (Sandbox Code Playgroud)

答案应该是:

 ['Date_', 'Temp', 'Descrip', 'ID_', 'Lat', 'Long', 'FID_']
Run Code Online (Sandbox Code Playgroud)

Sve*_*ach 7

如果您不需要修改列表,可以使用列表推导:

headers = [s + "_" if s in replace else s for s in headers]
Run Code Online (Sandbox Code Playgroud)

如果replace包含3个以上的项目,则需要使用集合而不是列表.(如果headers是列表,则测试s in headers需要迭代列表,而if headers是一个集合,s in headers可以在没有迭代的情况下在恒定时间内进行评估.)