我有以下for
循環和if
條件。我想使用Python的列表理解將其更改爲一行代碼。但是,我不知道爲什麼它不起作用,它說'^'指向if語句的語法錯誤。使用if和for循環的列表理解
原:
for i in range(len(lines)):
if (lines[i].find('('))!=-1:
lines[i] = lines[i][0:(lines[i].find('(')-1)]
改爲:
lines = [[lines[i][0:(lines[i].find('(')-1)]] for (i in range(len(lines))) if ((lines[i].find('('))!=-1)]
我只是想用列表解析方法,它被認爲是Python的特點之一。希望能夠學習新的東西,因爲我沒有編程經驗。感謝您的幫助,朋友們!
你有很多括號,其中一些語法錯誤地放置在句法上。刪除_all_圓括號,除了那些在函數調用中的括號。 – DyZ
對於初學者,你可以嘗試刪除'(in range(len(lines))' ... –
儘管基本上,您可能希望使用一個簡單的循環,因此您可以保留對'lines [i] .find('( ')'而不是一遍又一遍的重新計算,這是非常低效的。列表解析,但不要使用它們,如果他們讓你的代碼不可讀(你正在迅速接近),或者他們強迫你效率低下(如在這種情況下) –