Python 如何在字符串中找到列表元素的特定匹配项?

Python 如何在字符串中找到列表元素的特定匹配项?,python,string,list,Python,String,List,我整天都可以在列表中找到关于查找项目的信息,但这一条似乎是论坛无法找到的(我猜是因为有一种更简单的方法可以做到这一点——一些我还没有学会的方法) 我正在做一个练习题,但我无法解决这个问题:在我的函数中,我需要检查两个列表,看看它们的任何项(都是字符串)是否出现在输入中(也是字符串)。此外,如果出现多个事件,我需要确定if语句的最后一个事件 对不起,我知道这是一个糟糕的解释,但我很难描述它。我将显示我的代码 注意:我只做了几个星期的编程。如果可能的话,我会尽量将其控制在基本面范围内。非常感谢 因此

我整天都可以在列表中找到关于查找项目的信息,但这一条似乎是论坛无法找到的(我猜是因为有一种更简单的方法可以做到这一点——一些我还没有学会的方法)

我正在做一个练习题,但我无法解决这个问题:在我的函数中,我需要检查两个列表,看看它们的任何项(都是字符串)是否出现在输入中(也是字符串)。此外,如果出现多个事件,我需要确定if语句的最后一个事件

对不起,我知道这是一个糟糕的解释,但我很难描述它。我将显示我的代码

注意:我只做了几个星期的编程。如果可能的话,我会尽量将其控制在基本面范围内。非常感谢

因此,这需要使用各种匈牙利语单词,并根据单词中元音的类型(前面或后面)(字符串输入)将它们与适当的后缀连接起来。问题是在一个或两个列表中有两个元音的单词-我不知道如何在给定的输入字符串中找到列表项的最后一个实例

我已经尝试过使用find方法和使用ranges-我承认这超出了我有限的知识范围,我需要帮助。再次感谢

   front = ['e', 'é', 'i', 'í', 'ö', 'ő', 'ü', 'ű']
   back = ['a', 'á', 'o', 'ó', 'u', 'ú']

   def dative(word):
       for i in word:
           if i in front:
               return word+'nek'
           if i in back:
               return word+'nak'

例如:输入“virág”应该作为“virágnak”输出,但由于它是第一个索引出现,所以它会命中“i”,并输出“virágnek”。

您的代码只对第一个出现有效,但您希望它在最后有效

因此,请尝试反转字符串,以便第一次出现实际上是选定字符串中的最后一次

例如:

for i in reversed(word):

正如另一个答案所述,您可以在迭代字母之前反转单词(使用)

我还建议对代码进行一些更改,以考虑没有找到匹配项的情况(我使用
break
语句退出循环):

这与预期的一样有效(我不知道这些词是否有效,但它们表明函数完成了它应该完成的任务):


你需要给出更多的例子来检查它是否真的像它应该的那样工作,但是对于这个例子,它似乎起到了作用。

你在
前面有
i
,并且在你的单词中“a”前面有“i”,所以它似乎像预期的那样工作。谢谢!很好,简单的修复方法!将问题标记为“已回答”,以备将来参考@goldmundTha建议的nks-我认为它们实现了最佳实践,我知道我需要尽早开始。所以我猜在使用format方法时,return语句中的花括号是串联的?@goldmund该方法构建了一个新字符串并将参数放在其中。对于在这种情况下,结果也是一样的。
front = ['e', 'é', 'i', 'í', 'ö', 'ő', 'ü', 'ű']
back = ['a', 'á', 'o', 'ó', 'u', 'ú']

def dative(word):
    suffix = ''
    for i in reversed(word):
        if i in front:
            suffix = 'nek'
            break
        if i in back:
            suffix = 'nak'
            break

    return '{}{}'.format(word, suffix)
>>> dative('virág')
virágnak
>>> dative('vireg')
viregnek
>>> dative('virug')
virugnak
>>> dative('vrg')            # no suffix added
vrg