2013-12-11 16 views
0

如何比較包含操作的兩個字符串?我試着在運營商使用沒有成功包含用於比較兩個列表中的元素的操作

list_1=['check value 1','check value 2'] 

list_2=['12312 check value 1 ','234 check value 2'] 

for ele in list_1: 
    if ele in list_2: 
     print 'element present' 
    else: 
     print 'abscent' 

結果

abscent 
abscent 

我知道我們可以使用list_2另一個循環和對所有元素進行比較。我很好奇是否有更好的方法。

回答

5

您需要針對測試每個元素list_2;使用列表中的成員資格要求列表中存在字符串整個

for partial in list_1: 
    if any(partial in value for value in list_2): 
     print 'element present' 
    else: 
     print 'absent' 

這裏any() function,與發電機表達結合,至少停止一旦一個發現匹配搜索。

+0

感謝它的工作原理的答案,但確實** **任何停止的意思改變搜索?我試過'如果(在list_2中值的部分值)',並且它在每種情況下都返回** True **,即使部分完全不在list_2中。如果你能給我一些指示,這將是非常好的。 – ghub24

+0

@ rahul88:不,如果在傳入的是'True'的迭代器中有* a *值,'any()'只會返回'True'。默認是返回False(如果迭代器是空的)。 –

+1

@ rahul88:表達式「list_2中值的部分值」是一個生成器表達式;它只會在循環時產生值。每次迭代測試完成(「部分值」)。 'any()'一次一次循環遍歷這個表達式的輸出,查看下一個產生的結果,如果這是一個真正的值,它會停止循環並返回「真」。 –

1

你的代碼需要一點點:-)

list_1=['check value 1','check value 2'] 

list_2=['12312 check value 1 ','234 check value 2'] 

for ele in list_1: 
    for list2_ele in list_2: 
     if ele in list2_ele: 
      print 'element present' 
     else: 
      print 'absent' 

你只需要在第二個for循環:-)