我正試圖將一個串列中的數字字串轉換為浮點數,但遇到了困難,這可能是由于它是在一個串列的串列中。我無法確定一個解決方案。該串列隨后將被轉換為一個字典
。我的串列格式是這樣的:
[['PokedexNumber','Name','Type','Total', 'HP','攻擊','防御'。 'SpecialAttack','SpecialDefense','Speed'】。]
['001','Bulbasaur','GrassPoison', '318', '45',
'49','49','65','45'] 。
['002', 'Ivysaur', 'GrassPoison', '405', '60', '62', '63', '80', '80', '60']]
我的代碼是:
for i in newest_list:
try:
float(i)
except ValueError:
i
我得到的錯誤是:
型別錯誤:float(i)
型別錯誤:float()的引數必須是字串或數字,而不是'list'
。
uj5u.com熱心網友回復:
使用一個簡單的串列理解和str.isnumeric方法:
[[float(item) if item. isnumeric() else item for item in l] 。for l in newest_list]
輸出:
[['PokedexNumber', 'Name', 'Type', 'Total', 'HP', 'attack',
'防御', '特殊攻擊', '特殊防御', '速度'] 。
[1.0, 'Bulbasaur', 'GrassPoison', 318.0, 45. 0, 49.0, 49.0, 65.0, 65.0, 45.0】。]
[2.0, 'Ivysaur', 'GrassPoison', 405.0, 60。 0, 62.0, 63.0, 80.0, 80.0, 60.0] ]
uj5u.com熱心網友回復:
這是因為你有一個大小為3Xn的二維陣列
你需要添加另一個回圈來迭代每個內部串列for l in newest_list:
for string in inner_list:
try:
float(string)
except ValueError。
pass pass
uj5u.com熱心網友回復:
既然你有一個串列,試著添加另一個for回圈來迭代內部串列:
L = [['PokedexNumber', 'Name', 'Type', 'Total', 'HP', '攻擊', '國防'。'SpecialAttack', 'SpecialDefense', 'Speed'] 。
['001', 'Bulbasaur', 'GrassPoison', '318', '45',
'49', '49', '65', '65', '45'] 。
['002'/span>, 'Ivysaur'/span>, 'GrassPoison'/span>, '405'/span>, '60'/span>, '62', '63', '80', '80', '60']]
for i in L。
##添加
for j in i:
##結束
try:
float(j)
except ValueError:
j
這在串列理解中變得更加容易:
這在串列理解中變得更加容易。
def try_parse_float(x) 。
try。
return float(x)
except ValueError。
return x
vals = [(try_parse_float(j)) for i in L for j in i ]
或者,受@mozway的回答啟發:
vals = [float(j) if j. isnumeric() else j for i in L for j in i ]
uj5u.com熱心網友回復:
你的串列實際上是一個串列的串列,而不是一個串列,不是一個字串或數字。
一個有效的for回圈將看起來像這樣
for l in newest_list:
for i in l:
try:
float(i)
except ValueError:
pass # using pass here as just using i doesn't do anything
uj5u.com熱心網友回復:
通過第二個回圈,你可以訪問串列中的串列。 然后檢查內部串列中的值是否可以轉換為浮點。 如果是的話,用float型別替換字串串列元素。
for idx,value in enumerate(newest_list)。
for idx2, value2 in enumerate(value)。
try:
float(value2)
newest_list[idx][idx2] = float(value2)
except ValueError:
pass
# 要檢查變數的新型別:
for idx,value in enumerate(newest_list)。
for idx2, value2 in enumerate(value)。
print(type(value2))
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/325369.html
標籤:
上一篇:創建一個奇數串列
