问题描述
下面是一个函数,它使用 numpy 和 reduce 函数查找 3 个列表 MNDW_drawdown,PRC_overall_prec,TTS_Total_Trades
中的常见数字。然而,输出是一个 numpy 数组的形式,有什么办法可以将它转换成一个列表形式。我想使用 reduced
打印列表中的第 n 个值,因此它将是 list_[reduced]
。
代码:
from functools import reduce
import numpy as np
list_ = [ 5268,6760,6761 ... 15149,15150,15151]
def intersect(l1,l2,l3) :#function
reduced = reduce(np.intersect1d,(l1,l3))
print(reduced)
intersect(MNDW_drawdown,TTS_Total_Trades) #calling function
减少输出:
[11858 11860 11861 11862 11863 11864 11865 11866 11867 11868 11869 11870
13548 13549 13550 13551 13552 13553 13554 13555 13556 13557 13558 13559]
解决方法
问题的答案是reduced.tolist()
您可以按照其他答案中的建议使用 .tolist()
函数。另一种方法不是首先使用 numpy,而是使用内置的 set
类型,它提供了 .intersection
方法。将第一个列表转换为 set
,然后为其余参数链接 .intersection
方法。但是,结果也将是 set
,因此您无论如何都必须转换为列表。
def intersect(a: list,b: list,c: list) -> list:
return list(set(a).intersection(b).intersection(c))
注意结果不会被排序。