2012-11-16 295 views
0

請幫助我。如果b中的元素在a中,那麼我想將a(配對)放在新列表中(C)。Python:列表比較

a=['SMAD3', 'CYP11A1'] 
['SMAD3', 'ZNF83'] 
['SMAD3', 'PSMD11'] 
['SMAD3', 'MTF2'] 
['SMAD3', 'CFDP1'] 
['SMAD3', 'ST6GALNAC2']... 

b=['NPR2'] 
['COL2A1'] 
['GNPTAG'] 
['ENPP1'] 
['COL6A1'] 
['WISP3']... 

我編寫這樣的:

C=[ ] 
for data in a: 
    for line in b: 
    if ... 
    C.append(a) 

我怎樣才能填補if

+2

嗯..你能告訴你還要什麼輸出?這不是很清楚。 –

+4

至少使用正確的語法,'a'和'b'甚至不像列表。 –

+1

如果你只是在檢查一個元素是否在另一個元素中,那麼你可以在b:如果數據在a:中做數據,然後在那裏做你需要的。但我可能會誤解你的問題:) – RocketDonkey

回答

0

假設A和B是列表:

c = [] 
for data in a: 
    if data in b: 
     c.append(data) 

,或作爲列表理解:

c = [data for data in a if data in b] 
+0

如果a = [['aaaa','bbbb'],['ccccc','dddd']]和b = [['aaaa']] ???我怎樣才能追加? – user1826018

0
C=[ ] 

for data in a: 
    if data[0] in b or data[1] in b: 
     C.append(data) 
+0

如果a = [['aaaa','bbbb'],['ccccc','dddd']]和b = [['aaaa']] ???我怎樣才能追加? – user1826018

0

這一全球性的解決方案a可不止一對和b可每個內部列表中不止一個元素。

>>>a=[['ad','re','er'],['ew','fg']] 
>>>b=[['erw','dfger'],['we']] 

反正這裏是如何做到這一點:

c=[] 
modified_b=[] 
a=[['aaaa','bbbb'], ['ccccc', 'dddd']] 
b=[['aaaa']] 

for i in b: 
    modified_b.extend(i) # this will make b one list instead of list of lists 

for data in a: 
    for element in data: 
     if element in modified_b: 
      c.append(data) 
      break   #this will break the inner loop once you find b in a 
+0

是不是C.append(元素)而不是C.append(數據)? – user1826018

+0

非常感謝你!!!!!!! – user1826018

+0

@ user1826018我注意到你不接受任何正確的答案。試着接受你的問題的正確答案,所以你鼓勵社區來幫助你。謝謝 –