Добавление строки в список с помощью цикла for, к которому добавляется каждый элемент, - новая строка - PullRequest
0 голосов
/ 11 февраля 2019

Я пытаюсь создать новый, создать список, в который новый элемент добавляется в список через каждую итерацию цикла for.Код до сих пор выглядит так:

path_start = 'https://promo.betfair.com/betfairsp/prices/dwbfpricesukwin'
file = ".csv"

start = datetime.datetime.strptime("10-02-2007", "%d-%m-%Y")
end = datetime.datetime.strptime("21-02-2019", "%d-%m-%Y")
date_generated = [start + datetime.timedelta(days=x) for x in range(0, (end-start).days)]

date_list = []

for date in date_generated:
    date_string = date.strftime("%d%m%Y")
    for path_name in date_string:
        x = path_start + date_string + file
        date_list.append(x)

print(date_list)

Когда я делаю это, создается список, но каждый элемент в списке идентичен.Я хочу, чтобы каждый элемент использовал переменную date_string, созданную в предыдущем цикле for, которая должна меняться в каждой итерации.Это пример списка, который он создает:

['https://promo.betfair.com/betfairsp/prices/dwbfpricesukwin10022007.csv', 'https://promo.betfair.com/betfairsp/prices/dwbfpricesukwin10022007.csv'

Я попытался изменить отступ циклов, но это не решило проблему.

Я также попытался повысить эффективность, используямассив numpy, но ответ на этот вопрос ( Как объявить и добавить элементы в массив в Python? ) сказал использовать список.Поскольку этот список особенно длинен, любая помощь в повышении эффективности также приветствуется.

Приветствия, Сэнди

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

вам нужно только изменить цикл for следующим образом:

date_list = []
for date in date_generated:
    date_list.append(path_start + date.strftime("%Y%m%d") + file)

print(date_list)

пример вывода:

[...'https://promo.betfair.com/betfairsp/prices/dwbfpricesukwin20190124.csv',... 'https://promo.betfair.com/betfairsp/prices/dwbfpricesukwin20190219.csv'...]

ПРИМЕЧАНИЕ: Второй цикл не нужен, потому что вынет необходимости в цикле по строке date_string, вам нужно добавить дату к имени строки

0 голосов
/ 11 февраля 2019

Ваша проблема заключается здесь:

for path_name in date_string:

date_string - это строковое значение в этой точке.Ваша переменная path_name, которая не используется внутри цикла, выполняет итерацию по строке через строку.

Это означает, что у вас будет 8 значений (ddmmyyyy = 8 символов) для каждой записи.Если вы посмотрите на каждую восьмую запись в результирующем списке, вы, вероятно, увидите изменения.

Я не думаю, что вам вообще нужен внутренний цикл.Попробуйте только это:

for date in date_generated:
    date_string = date.strftime("%d%m%Y")
    x = path_start + date_string + file
    date_list.append(x)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...