2014-03-18 41 views
-4

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

感谢您的协助。

艾伦

+3

是的,这是可能的。现在你的*真实*问题是什么? – Bakuriu

+2

你被低估的原因是这个问题含糊不清。请给出示例代码或更好,然后将问题简化为非常简单的事情。有关Python循环的介绍,请参阅http://docs.python.org/3/tutorial/controlflow.html#for-statements – wkschwartz

回答

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] 

你的问题的其余部分需要你,以显示你当前的代码来获得一个有用的答案

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)