Python循环 - 为循环生成循环值

时间:2014-03-18 21:08:03

标签: python loops

是否可以使用Python循环不打印值列表,而是创建要在另一个循环中使用的值列表?例如,假设我想在多个时间范围内运行代码循环,并改变日期范围。到目前为止,我已手动输入或复制并粘贴我的日期集合在循环的字典中。但是我可以创建一个函数,在那里我给出第一个时间帧的开始日期,然后告诉它创建额外的7或27个时间帧的值,每次换3个月?此外,我的主代码可能不需要一个日期变量,而是一组变量,每个变量都需要为适当数量的循环生成。

感谢您的帮助。

艾伦

2 个答案:

答案 0 :(得分:1)

假设你有

for i in something:
    result = f(i)
    print result

您可以通过将打印切换到list.append

来列出这些内容
results = []
for i in something:
    result = f(i)
    results.append(result)

在这种简单的情况下,您可以使用列表推导

在一行中完成
results = [f(i) for i in something]

您的其余问题需要您显示当前代码以获得有用的答案

答案 1 :(得分:0)

一种可能性就是使用列表理解:

totalValues = 10

# Initial value and generation of the other ones
start = datetime.datetime.now()
dates = [datetime.timedelta(90 * i) + start for i in range(totalValues)]
# Another variable as example
salary = [1000 + i * 0.02 for i in range(totalValues)]

# And you can use both in another *loop*:
savings = [salary[i] * (dates[i] - start).days/90 for i in range(len(salary))]

另一种可能性是使用正常循环:

totalValues = 10

# Initial value
start = datetime.datetime.now()
dates = []
salary = []

for i in range(totalValues):
    dates.append(datetime.timedelta(90 * i) + start)
    salary.append(1000 + i * 0.02)

savings = []
# And you can use both in another *loop*:
for i in range(totalValues):
    savings.append(salary[i] * (dates[i] - start).days/90)