是否可以使用Python循環不打印值列表,而是創建要在另一個循環中使用的值列表?例如,假設我想通過多個時間框架運行一個代碼循環,並移動日期範圍。到目前爲止,我已經手動輸入或複製並將我的日期集粘貼到循環的字典中。但是,我可以創建一個函數,讓我給出第一個時間框架的開始日期,然後告訴它創建另外7或27個時間框架的值,每次移動3個月?此外,我的主代碼可能不需要一個日期變量,而是一組變量,每個變量都需要爲適當數量的循環生成。Python循環 - 爲循環生成循環值
感謝您的協助。
艾倫
是否可以使用Python循環不打印值列表,而是創建要在另一個循環中使用的值列表?例如,假設我想通過多個時間框架運行一個代碼循環,並移動日期範圍。到目前爲止,我已經手動輸入或複製並將我的日期集粘貼到循環的字典中。但是,我可以創建一個函數,讓我給出第一個時間框架的開始日期,然後告訴它創建另外7或27個時間框架的值,每次移動3個月?此外,我的主代碼可能不需要一個日期變量,而是一組變量,每個變量都需要爲適當數量的循環生成。Python循環 - 爲循環生成循環值
感謝您的協助。
艾倫
假設你有
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]
你的問題的其餘部分需要你,以顯示你當前的代碼來獲得一個有用的答案
一種可能性是用列表解析做到這一點:
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)
是的,這是可能的。現在你的*真實*問題是什麼? – Bakuriu
你被低估的原因是這個問題含糊不清。請給出示例代碼或更好,然後將問題簡化爲非常簡單的事情。有關Python循環的介紹,請參閱http://docs.python.org/3/tutorial/controlflow.html#for-statements – wkschwartz