Python 3.x 如何展平列表中的两个或多个数组?
我试图对股票价格进行一些定量分析。因此,我从不同年份的市场中随机挑选了一些符合条件的股票。这就是问题所在。我使用了几年的Python 3.x 如何展平列表中的两个或多个数组?,python-3.x,list,for-loop,append,Python 3.x,List,For Loop,Append,我试图对股票价格进行一些定量分析。因此,我从不同年份的市场中随机挑选了一些符合条件的股票。这就是问题所在。我使用了几年的for loop,并将结果放在一起,因此回报是一份[2020年股票行情表],[2019年股票行情表],[2018年股票行情表] 多姆 我想把它们平铺成一个没有重复的大列表,这样我就可以循环它们来读取硬盘上的csv文件 我也试过一些方法,但似乎与这件事无关 def flatten(container): for x in container: if isi
for loop
,并将结果放在一起,因此回报是一份[2020年股票行情表],[2019年股票行情表],[2018年股票行情表]
多姆
我想把它们平铺成一个没有重复的大列表,这样我就可以循环它们来读取硬盘上的csv文件
我也试过一些方法,但似乎与这件事无关
def flatten(container):
for x in container:
if isinstance(x, list):
for y in flatten(x):
yield y
else:
yield x
或
两种方法都没有满足我的愿望。
有人能帮我处理这件事吗?
谢谢,非常感谢
我的完整代码发布在下面:
def get_code_list(years=None):
samples = list()
if years is None:
years = list([20200212,20190222, ]) # 20180222, 20170222, 20160222
backs = list()
for i, year in enumerate(years, 1):
dd = pro.daily_basic(trade_date=year)
x1 = dd.close < 100
x2 = dd.circ_mv > 400000 # 流通市值低于300亿大于50亿
x3 = dd.circ_mv < 5000000
x4 = dd.pb < 15 # 市净率低于15
x5 = dd.pe_ttm < 100 # 市盈率低于100
x6 = dd.dv_ttm > 1 # 股息率大于1%
x = x1 & x2 & x3 & x4 & x5 & x6
stock_list = dd[x].ts_code.values
backs.append(stock_list)
samples.append(backs)
# return functools.reduce(lambda x,y:x+y,samples[:])
# return flatten(samples)
def get_code_列表(年份=无):
示例=列表()
如果年数为零:
年份=列表([202002220190222,])#20180222、20170222、20160222
backs=list()
对于i,枚举年份(年份,1):
dd=专业每日基本(交易日期=年)
x1=dd.close<100
x2=dd.circ_mv>400000流通市值低于300亿大于50亿
x3=dd.circ_mv<5000000
x4=dd.pb<15#市净率低于15
x5=dd.pe_ttm<100#市盈率低于100
x6=dd.dv_ttm>1#股息率大于1%
x=x1&x2&x3&x4&x5&x6
库存清单=dd[x].ts\U代码.values
backs.append(库存清单)
samples.append(backs)
#return functools.reduce(lambda x,y:x+y,samples[:])
#返回展平(样本)
尝试将循环中的列表连接起来。如果这些是普通的python列表,那么backs+=stock\u list
Numpy还有一个连接
函数
np.concatenate([backs,stock_list])
您期望的输出类型是一个列表,对吗?顺序重要吗?重要的是,我们不能在一个设置中在一个列表中循环两个或多个数组。我们必须确保它是一个列表,带有一个括号@jizhihaoSAMAwithbacks=np.concatenate([backs,stock_list])
,我可以把它们放在一个箱子里,工作起来很有魅力。逻辑就像你说的:backs+=stock\u list
,多谢老大@g23
import functools
functools.reduce(lambda x,y:x+y, stock_lists)
def get_code_list(years=None):
samples = list()
if years is None:
years = list([20200212,20190222, ]) # 20180222, 20170222, 20160222
backs = list()
for i, year in enumerate(years, 1):
dd = pro.daily_basic(trade_date=year)
x1 = dd.close < 100
x2 = dd.circ_mv > 400000 # 流通市值低于300亿大于50亿
x3 = dd.circ_mv < 5000000
x4 = dd.pb < 15 # 市净率低于15
x5 = dd.pe_ttm < 100 # 市盈率低于100
x6 = dd.dv_ttm > 1 # 股息率大于1%
x = x1 & x2 & x3 & x4 & x5 & x6
stock_list = dd[x].ts_code.values
backs.append(stock_list)
samples.append(backs)
# return functools.reduce(lambda x,y:x+y,samples[:])
# return flatten(samples)