[英]How can I automate arithmetic for a list structure in Python?
輸入:
['mia', 5, 10]
['mia', 20, 50]
['mia', 52, 101]
['mia', 220, 380]
我的代碼(可以正常工作,但我想讓它自動化,而無需一直手動輸入print
):
print lines[1][1] - lines[0][2]
print lines[2][1] - lines[1][2]
輸出:
10
2
119
為了使此打印過程自動化,我嘗試使用for
循環:
for x in lines:
print lines[x][1] - lines[x-1][2]
並收到錯誤: TypeError: list indices must be integers, not list
然后我嘗試了:
for int(x) in lines:
print lines[int(x)][1] - lines[int(x)-1][2]
並收到錯誤: SyntaxError: can't assign to function call
我檢查了在python中從2D列表的所有元素中減去一個值,但這沒有幫助我弄清楚我的問題。
感謝您的幫助,以使我的算術過程自動化(使用for
循環,以便我可以了解如何改進上面的代碼或其他結構)。 獎勵點,用於顯示如何定義函數或創建類定義以完成此任務。
在第一種情況下x in lines
x
表示x
取每一行的值。 即,首先x = ['mia', 5, 10]
,然后x = ['mia', 20, 50]
...這不是您想要的。 您想要x = 0
, x = 1
...
但是,通過嘗試通過寫int(x)
來簡單地將x
變成整數,您要說的是在循環的第一次迭代中將['mia', 5, 10]
分配給int(x)
,依此類推。 但是左側是函數調用,這意味着將x
轉換為int
,並且您不能為函數調用分配某些內容(在這種情況下為列表)。
您真正想要做的是更改循環表達式的右側。 您不想遍歷列表元素,而是要遍歷列表索引 。
for x in range(1,len(lines)):
print lines[x][1] - lines[x-1][2]
嘗試此操作,只需將循環語句放入打印語句中,以便\\ n觸發
print '\n'.join(str(lines[x][1]-lines[x-1][2]) for x in xrange(1,len(lines)))
你應該做 :
for x in range(1,len(lines)):
#do something
這將從1
循環到len(lines) - 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.