如何在字符串中找到列表元素的特定出现?

时间:2019-04-04 13:05:04

标签: python string list

我可以整天在列表中找到有关查找项目的信息,但是这似乎使论坛难以为继(我想是因为有一种更简单的方法可以做到这一点-有些方法我还没学到)。

我正在做一个练习问题,我无法弄清楚:在我的函数中,我需要检查两个列表以查看其输入项(也是字符串)是否出现在输入中(也是字符串) 。此外,如果出现多个事件,则需要确定最后一个事件,以使if语句起作用。

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

注意:我只编程了几周。如果可能,我试图将其保持在基本范围之内。多谢。

因此,这会使用各种匈牙利语单词,并根据单词(字符串输入)中的元音类型(正或反)将它们加上适当的后缀。问题是一个或两个列表中都有两个元音的单词-我无法弄清楚如何在给定的输入字符串中找到列表项的最后一个实例。

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

   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”。

2 个答案:

答案 0 :(得分:1)

您的代码仅在第一次出现时起作用,但您希望它在最后出现。

因此,请尝试反转字符串,以使第一个匹配项实际上是所选字符串中的最后一个匹配项。

示例:

for i in reversed(word):

答案 1 :(得分:0)

正如已经回答的另一个答案一样,您可以在遍历字母之前反转单词(使用reversed())。

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

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

您需要提供更多示例,以检查它是否确实可以正常工作,但是对于这个示例,它似乎可以解决问题。