我有嵌套的形式如下列表:嵌套列表 - 字符串爲浮動
my_list = [['Some1', '2', '3.6', '4.5', 'GB2', '6'],
['Some2', '3.9', '4', '5', 'HG5', '7.3'],
['Some3', '4', '5', '6.1', 'H2D', '8.9']]
每個子列表中的每個元素是一個字符串,但我想,把所有純粹的數字字符串浮動。
所以我嘗試下面的代碼:
for row in my_list:
for k, item in enumerate(row):
if k in (1, 2, 3, 5):
item = float(item)
不幸的是,嵌套列表保持不變。我確定我犯了一個簡單的錯誤,但我看不到它。任何幫助(和上下文)將不勝感激。
這將在這種情況下被認爲是更Python,for循環或列表理解像DSM建議創建my_list2?是一個還是另一個首選?我的實際列表可以達到100,000 +行。 – donopj2 2012-03-19 18:17:13
@PatrickD:這兩個答案做不同的事情。我的答案中的代碼突變了原來的列表。 DSM答案中的代碼創建了一個新列表。另一個區別是,我的答案中的代碼硬碼需要轉換的列,並且如果某些值無法轉換,則會出錯。 DSM答案中的代碼嘗試轉換每個項目,並且如果轉換成功,則使用浮點值而不是原始值。如果您需要這些語義,則此答案中的代碼更快並消耗更少的內存。 – 2012-03-19 18:21:58