簡體   English   中英

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

[英]How do I find a specific occurrence of a list element in a string?

我一整天都可以找到有關在列表中查找項目的信息,但這個信息似乎在論壇中找不到(我的猜測是因為有一種更簡單的方法可以做到這一點 - 有些方法我還沒有學過)。

我正在做一個練習題,但我無法解決這個問題:在我的函數中,我需要檢查兩個列表以查看它們的任何項目(它們是字符串)是否出現在輸入(也是一個字符串)中。 此外,如果出現不止一次,我需要確定最后一次,以便我的 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”。

您的代碼僅在第一次出現時有效,但您希望它在最后一次出現。

因此,嘗試反轉字符串,以便第一次出現實際上是所選字符串中的最后一次出現。

例子:

for i in reversed(word):

正如已經說過的另一個答案,您可以在迭代字母之前反轉單詞(使用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

你需要提供更多的例子來檢查它是否真的像它應該的那樣工作,但對於這個例子,它似乎可以解決問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM