【问题标题】:Function to remove specific word from lists从列表中删除特定单词的功能
【发布时间】:2022-07-06 00:07:34
【问题描述】:

我有几个列表,在列表的不同位置包含“数据”一词。我想构建一个函数,从每个列表中删除该单词(而不是整个元素)。

example_list = ['Client 1 Data','Client 2','Client 3 Data']

output_list = ['Client 1','Client 2','Client 3']

我试过了,但它不起作用:

def my_func(column):
    for i in range(len(column)):
        column.replace('Data', '')

【问题讨论】:

  • 请说明“不工作”是什么意思
  • column 是列表,而不是字符串。

标签: python list function


【解决方案1】:

调用replace 返回一个修改后的字符串,它不会修改原始字符串。如果要修改列表,则需要对每个单独的字符串调用replace,并将修改后的字符串分配给原始列表中的索引:

>>> def my_func(column):
...     for i in range(len(column)):
...         column[i] = column[i].replace('Data', '')
...
>>> example_list = ['Client 1 Data','Client 2','Client 3 Data']
>>> my_func(example_list)
>>> example_list
['Client 1 ', 'Client 2', 'Client 3 ']

如果修改函数内部的原始列表不是必需的,那么通过构建并返回一个新列表实际上更容易做到这一点:

>>> def my_func(column):
...     return [entry.replace('Data', '') for entry in column]
...
>>> my_func(['Client 1 Data','Client 2','Client 3 Data'])
['Client 1 ', 'Client 2', 'Client 3 ']

【讨论】:

    【解决方案2】:

    考虑使用list comprehension

    def remove_word(words: list[str], word_to_remove: str) -> list[str]:
        return [w.replace(word_to_remove, '').strip() for w in words]
    
    
    def main() -> None:
        example_list = ['Client 1 Data', 'Client 2', 'Client 3 Data']
        print(f'{example_list = }')
        output_list = remove_word(words=example_list, word_to_remove='Data')
        print(f'{output_list = }')
    
    
    if __name__ == '__main__':
        main()
    
    

    输出:

    example_list = ['Client 1 Data', 'Client 2', 'Client 3 Data']
    output_list = ['Client 1', 'Client 2', 'Client 3']
    

    【讨论】:

      【解决方案3】:

      您可以在 list 上使用 map,但如果您想更正代码,则需要指定要更改的索引:

      >>> list(map(lambda x: x.replace('Data', ''), example_list))
      ['Client 1 ', 'Client 2', 'Client 3 ']
      

      您的代码:

      def my_func(column):
          for i in range(len(column)):
              column[i] = column[i].replace('Data', '')
      

      输出:

      my_func(example_list)
      print(example_list)
      # ['Client 1 ', 'Client 2', 'Client 3 ']
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-28
        相关资源
        最近更新 更多