Python 从列表计算中排除元素的简单方法?

Python 从列表计算中排除元素的简单方法?,python,list,Python,List,例如,我想检查两个列表之间的相关系数,如: r = np.corrcoef(list25, list26)[0,1] 但是我想从计算中排除列表中的-1。是否有一种简单的单行程序方法来实现这一点,而不是制作列表的新副本并迭代删除所有-1之类的内容?有一种单行程序解决方案。它正在创建一个新的列表,但没有这些列表。可通过以下方式完成: 它基本上将所有符合条件的内容从旧列表复制到新列表 以你为例: r = np.corrcoef([x for x in list25 if x != -1], [x f

例如,我想检查两个列表之间的相关系数,如:

r = np.corrcoef(list25, list26)[0,1]

但是我想从计算中排除列表中的-1。是否有一种简单的单行程序方法来实现这一点,而不是制作列表的新副本并迭代删除所有-1之类的内容?

有一种单行程序解决方案。它正在创建一个新的列表,但没有这些列表。可通过以下方式完成:

它基本上将所有符合条件的内容从旧列表复制到新列表

以你为例:

r = np.corrcoef([x for x in list25 if x != -1], [x for x in list26 if x != -1])[0,1]

有一个单行程序解决方案。它正在创建一个新的列表,但没有这些列表。可通过以下方式完成:

它基本上将所有符合条件的内容从旧列表复制到新列表

以你为例:

r = np.corrcoef([x for x in list25 if x != -1], [x for x in list26 if x != -1])[0,1]
使用发电机

def greater_neg_1(items):
    for item in items:
        if item>-1:
            yield item
用法:

>>> L = [1,-1,2,3,4,-1,4]
>>> list(greater_neg_1(L))
[1, 2, 3, 4, 4]
或:

不需要任何额外内存。

使用生成器

def greater_neg_1(items):
    for item in items:
        if item>-1:
            yield item
用法:

>>> L = [1,-1,2,3,4,-1,4]
>>> list(greater_neg_1(L))
[1, 2, 3, 4, 4]
或:


不需要任何额外内存。

如果确实要从列表中删除
-1

while -1 in list25: list25.remove(-1)

如果确实要从列表中删除
-1

while -1 in list25: list25.remove(-1)

要筛选列表吗<代码>筛选(lambda x:x!=-1,值)或列表理解:
[x代表mylist中的x,如果x!=-1]
是否要筛选列表<代码>过滤器(lambda x:x!=-1,值)或列表理解:
[x代表mylist中的x,如果x!=-1]