我正在尝试检查列表一中的项目是否在列表二中,如果是这样,则替换掉列表一中的项目(通过在其后附加一个“ _”)。需要注意的是,列表一中的项目必须保持原始顺序。我想出了一种使用嵌套的for循环和枚举来实现此目的的方法,但是我想知道是否存在更有效/更快速的方法,如果合适的话,可能是列表理解或映射?提前致谢。

这些列表是:

 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_']

最佳答案

如果您不需要就地修改列表,则可以使用列表理解:

headers = [s + "_" if s in replace else s for s in headers]


如果replace包含3个以上的项目,则要使用集合而不是列表。 (如果headers是列表,则测试s in headers需要在列表上进行迭代,而如果headers是集合,则可以在恒定时间内对s in headers进行求值,而无需迭代。)

关于python - Python:使用列表检查单独列表中的项目,如果存在则替换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6494056/

10-14 14:09
查看更多