将列表中的单词替换为另一个

2024-09-30 05:29:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个程序,就是把一个句子分成一个叫做“单词”的列表。我输入一个类似“我爱奶牛”的句子,程序会把它分成“单词”列表。列表看起来像words = ['i','hate','cows']。我把那部分写下来了,但我想用其他词来代替像我这样的词。这是我正在努力工作的一段代码:

def word_identify(words):
parts_of_speech = []
for word in words:
    if word == 'help':
        help_info(help)
    if word == '?':            
        print "This is a question."
        return 12
    elif word == 'why':
        print "This is a question!"
        return 12
    elif word  == 'am':
        word = 'are'
        return 10
    elif word == 'i':
        word = ' you'
        return 10
    else:
        #new_words.append(word)
        return 1 

任何帮助都将不胜感激。返回值需要我忽略,它们会触发程序的另一部分。我希望“单词”列表用新单词更新。在

非常感谢!!!在

编辑 谢谢你们的回应!Nammi,你很乐于助人,但是如果你告诉我如何解决这个问题,那就只替换其中的一个,如果它们都出现在列表中,那就太好了!谢谢你们!在

仍然存在的问题是:

^{pr2}$

别在意我已经处理过了。在


Tags: 程序列表returnifishelpthis单词
3条回答

与使用for in循环不同,您可以通过索引循环。 使用列表元素的索引指定一个列表元素会用新值覆盖列表中的任何值。因此,您不需要在进行更改后返回列表。在

for i in range(0, len(words)):
    if (words[i] == "i"):
        words[i] = "you"
    elif (words[i] == "am"):
        words[i] = "are"
....

使用map函数非常简单

words = ['i','hate','cows']
new_words = map(lambda x: 'you' if x == 'i' else x, words)
print new_words  #prints ['you', 'hate', 'cows']

此函数接受大小为N的输入列表,并输出长度完全相同的列表。lambda函数对输出数组的每个元素应用转换。在

您可以使用列表理解,如下所示:

new = ['you' if word == 'i' else word for word in words]

其运行方式如下:

^{pr2}$

或者,对于更详细的解决方案

只需使用一个基本的for循环:

words = ['i','hate','cows']
new = []
for i in words:
    if i == 'i':
        new.append('you')
    elif i == 'am':
        new.append('are')
    elif i == 'why' or i == '?':
        print "This is a question!"
    else:
        new.append(i)

其运行方式如下:

>>> words = ['i','hate','cows']
>>> new = []
>>> for i in words:
...     if i == 'i':
...         new.append('you')
...     elif i == 'am':
...         new.append('are')
...     elif i == 'why' or i == '?':
...         print "This is a question!"
...     else:
...         new.append(i)
... 
>>> new
['you', 'hate', 'cows']
>>> 

相关问题 更多 >

    热门问题