Python 根据条件更新循环中列表的上一个元素

Python 根据条件更新循环中列表的上一个元素,python,list,Python,List,我正在努力清理名单上的名字 results = [] mylist = ['jellyfish','jellyish','jellyish','smellyfish'] #convert to unicode mylist = [unicode(i) for i in mylist] for i, j in enumerate(mylist): current = mylist[i] previous = mylist[i-1] current_score = jf

我正在努力清理名单上的名字

results = []
mylist = ['jellyfish','jellyish','jellyish','smellyfish']

#convert to unicode
mylist = [unicode(i) for i in mylist]

for i, j in enumerate(mylist):
    current = mylist[i] 
    previous = mylist[i-1]
    current_score = jf.jaro_winkler(current, previous)
    if(current_score > 0.96):
        current=previous
    print current, current_score
我得到以下结果:

  • 水母0.896296296296
  • 水母0.977778
  • 胶状1.0
  • 臭鱼0.858333333
前两张唱片是我想要的,但我也需要把水母换成水母

预期结果应为

  • 水母0.896296296296
  • 水母0.977778
  • 水母0.977778
  • 臭鱼0.858333333

原始列表中的值未更新。您需要通过添加以下行来完成此操作-

previous = mylist[i-1]
current_score = jf.jaro_winkler(current, previous)
if (current_score > 0.96):
    mylist[i] = mylist[i-1]
    current = previous

让我们关注需要更改的内容-您当前正在执行的
current=previous
,它只会将变量
current
重新分配给另一个对象

您需要做的是实际更新列表。您已经在迭代索引了,所以只需要做一个小的更改

mylist = ['jellyfish', 'jellyish', 'jellyish', 'smellyfish']

for i, v in enumerate(mylist[1:], 1):
    p, c = mylist[i - 1], v
    if jf.jaro_winkler(p, c) > .96:
        mylist[i] = p

不知道这是什么。什么是jaro winkler?这是在“水母”下比较字符串相似性的方法,它给出了当前_分数的数字。@cᴏʟᴅsᴘᴇᴇᴅ 看见