#python-3.x #list #for-loop #append
#python-3.x #Список #для цикла #добавить
Вопрос:
Я пытаюсь выполнить некоторый количественный анализ цен на акции. итак, я выбрал несколько случайных акций с рынка разных лет с соответствующими критериями. Вот тут-то и возникла проблема. Я использовал for loop
в течение многих лет и собрал результаты вместе, поэтому результатом является [список тикеров акций в 2020 году], [список тикеров акций в 2019 году], [список тикеров акций в 2018 году]…
DOM
>>>print(list(get_code_list()))
[array(['601677.SH', '000685.SZ', '600675.SH', '603018.SH',....], dtype=object),
array(['600230.SH', '600007.SH', '300068.SZ', '601369.SH',..., dtype=object)]
Я хочу объединить их в один большой список без дубликатов, чтобы я мог зацикливать их для чтения CSV-файлов на моем жестком диске.
Я также пробовал некоторые методы, но, похоже, это не имеет отношения к этому вопросу.
def flatten(container):
for x in container:
if isinstance(x, list):
for y in flatten(x):
yield y
else:
yield x
или
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 amp; x2 amp; x3 amp; x4 amp; x5 amp; 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)
Комментарии:
1. Тип вашего ожидаемого вывода — это список, верно? Имеет ли значение порядок?
2. это важно, потому что мы не можем зациклить два или более массивов в одном списке в одной настройке. Мы должны убедиться, что это один список с одной скобкой. @jizhihaoSAMA
Ответ №1:
Попробуйте объединить списки в вашем цикле. Если это обычные списки Python, то backs = stock_list
У Numpy также есть concatenate
функция https://numpy.org/doc/stable/reference/generated/numpy.concatenate.html
np.concatenate([backs, stock_list])
Комментарии:
1. с
backs = np.concatenate([backs, stock_list])
я смог поместить их в один блок, сработал как по волшебству. логика была именно такой, как вы сказали:backs = stock_list
, большое спасибо, шеф! @g23