來自這個問題 將陣列的最后一個位置添加到同一個陣列
我很好奇提到的回圈是否可以在串列理解中完成?
array = [3,4,2,5,4,5,8,7,8,9]
value = 10
for i in range(1,10):
array[i] = array[i-1] value
我想也許與海象運營商有關。
我的嘗試給了我一個錯誤,導致cannot-use-assignment-expressions-with-subscript
[array[count] := val if count == 0 else array[count] := array[count-1] value for count,val in enumerate(array)]
有任何想法嗎?
uj5u.com熱心網友回復:
for 回圈只使用第一個元素并array用全新的專案覆寫。使用以下串列推導式可以實作完全相同的結果:
array = [array[0] i*value for i in range(len(array))]
輸出:
[3, 13, 23, 33, 43, 53, 63, 73, 83, 93]
uj5u.com熱心網友回復:
發生錯誤array[count]是因為它不是變數識別符號,而是串列中的一個位置array,因此您無法為其分配任何內容。
相反,您可以使用以下...
array = [3,4,2,5,4,5,8,7,8,9]
value = 10
res = [(first_val := array[count]) if count == 0 else array[count-1] value for count,val in enumerate(array)]
print(res)
print(first_val)
輸出:-
[3, 13, 14, 12, 15, 14, 15, 18, 17, 18]
3
uj5u.com熱心網友回復:
我們可以觀察到,如果我們得到的陣列是result,那么result[i] = array[0] i * value。
例如:
result[0] = array[0]result[1] = result[0] value = array[0] 1 * valueresult[2] = result[1] value = array[0] 2 * value- 等等。
從代碼可以看出,這通常可以表示為:
result[0] = array[0]result[i] = result[i - 1] value為i > 0。
然后,串列理解變為:
result = [array[0] i * value for i in range(len(array))]
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/401842.html
上一篇:在特殊字符后添加空格
下一篇:滿足條件后如何讓訊息框出現?
