2014-03-18 79 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)