Python可能的列表理解
发布时间:2020-12-20 13:52:08 所属栏目:Python 来源:网络整理
导读:我有一个文本文件和两个字符串列表. 第一个列表是关键字列表 k = [hi,bob] 第二个列表是我想要替换关键字的单词 r = [ok,bye] 我想把文本文件作为输入,当k出现时,它被r替换,因此,“嗨,你怎么样”将被改为“好的,你好吗” 解决方法 假设你已经解析了你的句子
我有一个文本文件和两个字符串列表.
第一个列表是关键字列表 k = [hi,bob] 第二个列表是我想要替换关键字的单词 r = [ok,bye] 我想把文本文件作为输入,当k出现时,它被r替换,因此,“嗨,你怎么样”将被改为“好的,你好吗” 解决方法
假设你已经解析了你的句子:
sentence = ['hi','how','are','you','bob'] 你想要做的是检查这句话中的每个单词是否都出现在k中.如果是,请用r中的相应元素替换它;否则,请使用实际的单词.换一种说法: if word in k: word_index = k.index(word) new_word = r[word_index] 这可以用更简洁的方式编写: new_word = r[k.index(word)] if word in k else word 使用列表推导,这里是你如何处理整个句子: new_sentence = [r[k.index(word)] if word in k else word for word in sentence] new_sentence现在等于[‘ok’,’how’,’are’,’you’,’bye’](这就是你想要的). 请注意,在上面的代码中,我们执行两个等效的搜索操作:k中的单词和k.index(单词).这是低效的.通过捕获索引方法中的异常,可以将这两个操作简化为一个: def get_new_word(word,k,r): try: word_index = k.find(word) return r[word_index] except ValueError: return word new_sentence = [get_new_word(word,r) for word in sentence] 现在,您还应该注意,在句子中搜索单词是具有O(n)复杂度的搜索(其中n是关键字的数量).因此,该算法的复杂性是O(n.m)(其中是句子长度).您可以使用更合适的数据结构将此复杂性降低到O(m),如其他注释所示.这是一个练习:-p (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |