2014-11-25 244 views
1

我想查看兩個字符串是否在最後一次出現特定字符後相互匹配。例如:特定字符後字符串匹配

same_list = ['Time - is an illusion.', 'Lunchtime - which is delicious - is an illusion.'] 

True 

所以在這種情況下,我的某個字符是' - '。我想看看兩個字符串的最後一個' - '後面的字符串是否相互匹配。 ' - '之後的字符串是'是幻覺'。爲兩個字符串。所以這是真的。

到目前爲止,我有:

same_list = ['Time - is an illusion.', 'Lunchtime - which is delicious - is an illusion.'] 

some_list = [] 

for string in same_list: 
    for ch in string: 
     if ch == '-': 
      new_string = string.split(ch) 
      some_list.append(new_string) 

i = 0 

for sublist[-1] in some_list: 

我覺得我忘了在Python這樣做的一個簡單的方法。我只記得while循環,但是這將返回' - '的第一次出現,而不是最後一次。另外,我寫的函數返回第二個字符串兩次,因爲它被分割兩次。我該如何擺脫?

回答

0

你可以做一些簡單的像這樣(假設列表中的所有結局必須匹配):

def end_matches(*phrases):   # phrases becomes a tuple that will take any number 
    phrase_endings = set()   # number of positional parameters 
    for phrase in phrases: 
     end = phrase.split('-')[-1] # take the last element of the split list 
     phrase_endings.add(end) 
    return len(phrase_endings) == 1 # the set holds only unique values, so a set of 
            # length 1 means all values in the set are the same 

您現在可以測試一下:

>>> same_list = ['Time - is an illusion.', 'Lunchtime - which is delicious - is an illusion.'] 
>>> end_matches(*same_list)   # unpack the list into individual positional arguments 
True 
+0

如果我有一個列表> len 2? – learningpython 2014-11-25 02:46:39

+0

一秒鐘。我在這裏有孩子。 – 2014-11-25 02:52:10

+0

對不起,我無法理解您的代碼。它仍然好像我需要知道我的列表中的len來實現這個代碼。如果我的列表中的列表是可變的,該怎麼辦? – learningpython 2014-11-25 02:52:48