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])

您期望的输出类型是一个列表,对吗?顺序重要吗?重要的是,我们不能在一个设置中在一个列表中循环两个或多个数组。我们必须确保它是一个列表,带有一个括号@jizhihaoSAMAwith
backs=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)