首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python:列表比较

Python:列表比较
EN

Stack Overflow用户
提问于 2012-11-16 13:30:40
回答 3查看 171关注 0票数 0

请帮帮我。如果b中的元素在a中,那么我想把a (成对的)放在一个新的列表(C)中。

代码语言:javascript
复制
a=['SMAD3', 'CYP11A1']
['SMAD3', 'ZNF83']
['SMAD3', 'PSMD11']
['SMAD3', 'MTF2']
['SMAD3', 'CFDP1']
['SMAD3', 'ST6GALNAC2']...

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

我是这样写的:

代码语言:javascript
复制
C=[ ]
for data in a:
   for line in b:
  if ...
  C.append(a)

如何填写if

EN

回答 3

Stack Overflow用户

发布于 2012-11-16 13:39:38

假设a和b是列表:

代码语言:javascript
复制
c = []
for data in a:
    if data in b:
        c.append(data)

或者,作为一种列表理解:

代码语言:javascript
复制
c = [data for data in a if data in b]
票数 0
EN

Stack Overflow用户

发布于 2012-11-16 13:41:14

代码语言:javascript
复制
C=[ ]

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

Stack Overflow用户

发布于 2012-11-16 15:54:41

使用这种全局解决方案,a可以是多个元素对,b可以是每个内部列表中的多个元素。

代码语言:javascript
复制
>>>a=[['ad','re','er'],['ew','fg']]  
>>>b=[['erw','dfger'],['we']] 

无论如何,下面是如何做到这一点的:

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13411039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档