2012-11-16 64 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我注意到你不接受任何正确的答案。试着接受你的问题的正确答案,所以你鼓励社区来帮助你。谢谢 –