我做了一個簡單的回圈,輸入是一個整數串列。然后對這些數字進行一些亂數學運算。我想要的是它輸出另一個帶有(浮點)結果的串列,但我似乎無法讓它作業。使用“追加”給我一個錯誤,說浮點數是不可迭代的。我真的不知道我怎么能把這些花車放在一個串列中……有人能引導我走向正確的方向嗎?我在下面的 printscreen 中包含了編碼。
#What works, but result is non-listed floats
xlst = range(1, 100)
print(list(xlst))
ylst = []
res = []
for i in xlst:
res = i * 1.1
print(res)
#How I thought I could list everything, but floats are not iterable
#for i in xlst:
#res = res.append(i * 1.1)
#print(res)
uj5u.com熱心網友回復:
您的嘗試朝著好的方向發展,但這里有一些提示:
- 的值
res
沒有設定回res = []
第 14 行的回圈之前。因此,它的值最后由第 9 行設定。res
因此是一個浮點數,res.append()
邏輯上將失敗AttributeError: 'float' object has no attribute 'append'
。 - 第 15 行設定
res
輸出為res.append()
. 但是,在 python 中,append
添加元素并回傳None
,而不是您似乎期望的擴展序列。 - 第 16 行將為第 14 行回圈的每個步驟執行。要僅在完成后顯示完整串列,您應該將其移出回圈(通過遞減)。
收集所有上述提示給出了替換第 14 行的最終結果:
res = []
for i in xlst:
res.append(i * 1.1)
print(res)
希望這能讓事情更清楚!
uj5u.com熱心網友回復:
使用串列推導。
res = [x * 1.1 for x in xlst]
uj5u.com熱心網友回復:
res = [] # after assignation res is a list object
for i in xlist:
res = i * 1.1 # after assignation res is a float number
print(rest)
在 for 回圈的第一次迭代之后, varres
將是一個浮點物件,也在整個回圈之后,所以在注釋代碼中,你不能做追加,因為浮點物件不是串列。即使洗掉第一個 for 回圈,您也會收到類似的錯誤,因為list.append()
回傳None
:
res = res.append(i * 1.1) # after assignation res is None
解決方案:一個簡單的如下:
res = [] # after assignation res is a list object
for i in xlist:
aux = i * 1.1 # using an auxiliary float var
print(aux)
res.append(aux) # storing in the list
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/470698.html