如何在Python列表中查找元素索引?

7 投票
4 回答
72450 浏览
提问于 2025-04-16 06:34

可能重复的问题:
如何找到列表中最大值的位置?

这是一个作业问题:
定义一个函数 censor(words,nasty),这个函数接收一个单词列表,并把所有出现在 nasty 列表中的单词替换成“CENSORED”,然后返回这个被处理过的单词列表。

>>> censor([’it’,’is’,’raining’], [’raining’])
[’it’,’is’,’CENSORED’]

我看到的解决方案是这样的:

  1. 找到 nasty 中单词的索引
  2. "CENSORED" 替换掉匹配到的单词

但是我在找索引的时候遇到了困难……

4 个回答

1

你的方法可能能行,但其实有点复杂。

在Python中,有一种非常简单的写法可以检查某个东西是否在列表里:

censor = [ 'bugger', 'nickle' ]
word = 'bugger'
if word in censor: print 'CENSORED'

用这种方法,你只需要遍历你的单词列表,检查每个单词是否在 censor 列表中。

要遍历你的单词列表,可以使用 for 循环。因为你可能需要修改当前的单词,所以可以用一个索引,像这样:

for index in len(words)):
   print index, words[index]

现在你只需要把这两段代码结合起来就行了。

39

你可以通过使用 .index 方法来找到任何元素在 list 列表中的位置。

>>> l=['a','b','c']
>>> l.index('b')
1
1

其实你在这里不需要用到索引。只需要遍历一下 words 这个列表,检查每个单词是否在 nasty 里。如果在,就把 'CENSORED' 加到结果列表里;如果不在,就把这个单词本身加进去。

或者你可以使用 列表推导式条件表达式,这样可以写得更简洁一些:

撰写回答