加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读