Python 如何在字符串中找到列表元素的特定匹配项?
我整天都可以在列表中找到关于查找项目的信息,但这一条似乎是论坛无法找到的(我猜是因为有一种更简单的方法可以做到这一点——一些我还没有学会的方法) 我正在做一个练习题,但我无法解决这个问题:在我的函数中,我需要检查两个列表,看看它们的任何项(都是字符串)是否出现在输入中(也是字符串)。此外,如果出现多个事件,我需要确定if语句的最后一个事件 对不起,我知道这是一个糟糕的解释,但我很难描述它。我将显示我的代码 注意:我只做了几个星期的编程。如果可能的话,我会尽量将其控制在基本面范围内。非常感谢 因此,这需要使用各种匈牙利语单词,并根据单词中元音的类型(前面或后面)(字符串输入)将它们与适当的后缀连接起来。问题是在一个或两个列表中有两个元音的单词-我不知道如何在给定的输入字符串中找到列表项的最后一个实例 我已经尝试过使用find方法和使用ranges-我承认这超出了我有限的知识范围,我需要帮助。再次感谢Python 如何在字符串中找到列表元素的特定匹配项?,python,string,list,Python,String,List,我整天都可以在列表中找到关于查找项目的信息,但这一条似乎是论坛无法找到的(我猜是因为有一种更简单的方法可以做到这一点——一些我还没有学会的方法) 我正在做一个练习题,但我无法解决这个问题:在我的函数中,我需要检查两个列表,看看它们的任何项(都是字符串)是否出现在输入中(也是字符串)。此外,如果出现多个事件,我需要确定if语句的最后一个事件 对不起,我知道这是一个糟糕的解释,但我很难描述它。我将显示我的代码 注意:我只做了几个星期的编程。如果可能的话,我会尽量将其控制在基本面范围内。非常感谢 因此
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