【问题标题】:Appending a string to a list using a for loop where each item is appended is a new string使用 for 循环将字符串附加到列表中,其中附加的每个项目都是一个新字符串
【发布时间】:2019-07-05 05:14:38
【问题描述】:

我正在尝试创建一个新的创建列表,其中通过 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)

当我这样做时,会创建一个列表,但列表中的每个项目都是相同的。我希望每个项目都使用在前一个 for 循环中创建的 date_string 变量,该变量应在每次迭代中更改。这是它创建的列表的示例:

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

我尝试过更改循环的缩进,但这并没有解决问题。

我也尝试使用 numpy 数组来提高效率,但这个问题的答案 (How to declare and add items to an array in Python?) 说要使用列表。由于列表特别长,因此也将不胜感激任何有助于提高效率的帮助。

干杯, 桑迪

【问题讨论】:

  • path_start, date_string, file 不要在 for path_name in date_string: 内部更改。
  • 是否有 numpy 标签是因为您更喜欢/考虑 NumPy 解决方案?
  • 你需要内循环做什么?
  • 是的,我认为这可能会提高效率,但我不确定如何将新项目添加到 numpy 数组中
  • @Austin 干杯!我已经取出第二个循环并且它现在可以工作了。想多了啊!

标签: python list numpy for-loop


【解决方案1】:

你的问题在这里:

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)

【讨论】:

    【解决方案2】:

    你只需要像这样改变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,您需要将日期附加到字符串名称

    【讨论】:

      猜你喜欢
      • 2020-05-26
      • 1970-01-01
      • 2017-05-15
      • 2013-06-03
      • 2022-12-15
      • 2018-10-19
      • 2018-09-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多