2014-11-03 95 views
1
t = input() 

stringlist = [] 
setlist = [] 

for _ in range(t): 
    stringlist.append(raw_input()) 


print stringlist 


for h in stringlist: 
    setlist.append((set(h))) 

print setlist 


print len((setlist[0] & setlist[1] & setlist[2])) 

這是一個簡單的程序,用於查找作爲輸入提供的單詞之間的常用字母數。注意:該程序僅適用於3個輸入。有人能指出我如何推廣此代碼的最後一行以允許提供儘可能多的輸入嗎?如果你能指出我的答案而不真正給出答案,我將不勝感激。如何處理這個循環?

到目前爲止,我曾考慮過使用join()將輸入字符串與分隔符合併爲'&',然後將eval()放在結果字符串中。

+1

作爲一個規則,認爲你需要使用'eval'是你要去的標誌 錯誤的方法! – jonrsharpe 2014-11-03 13:52:20

+0

而不是你在這裏列出的字符串,但重複線程中的所有解決方案仍然可以爲你工作。 – 2014-11-03 13:58:59

+0

完全愚蠢的標記重複沒有鏈接到實際的重複! – 2014-11-03 14:09:41

回答

2

只要把所有的輸入列表中,然後使用mapset.intersection

l = ["foo", "boo", "foobar"] 
common = set.intersection(*map(set,l)) 
print common 
set(['o']) 

全碼:

t = int(raw_input()) 

string_list = [raw_input() for _ in range(t)] 
common = set.intersection(*map(set,string_list)) 
print(len(common)) 

或澆鑄的raw_input將作爲一組,如果你不需要的列表其他地方的詞:

string_list = [set(raw_input()) for _ in range(t)] 
common = set.intersection(*string_list) 
+0

哇,這使得我的代碼看起來很愚蠢lol – kalin 2014-11-03 13:53:20