2017-04-04 75 views
0

說我有列出的類似元素,如數字轉換中列出的清單漂浮在蟒蛇

[['string', 'string', 'number', 'number', 'number'], ['string', 'string', 'number', 'number', 'number']] 

我怎麼會去有關轉換隻是漂浮在數字列表?謝謝你的幫助。

編輯:
所以我有一個csv文件的數據格式化的方式。我通過將行作爲列表列表來提取數據。當我最終將數據打印爲格式化表格時,我希望將數字格式化爲圓形浮點數。

+0

在固定位置進行轉換?它是否將數字提取到新列表中? – zhqiat

+0

你想要的輸出是怎樣的? 'number'是什麼浮點數,因爲float('number')'沒有任何意義。請編輯該問題以提供更多信息。 –

+0

好吧,我添加了更多的信息,希望有助於。讓我知道是否需要更多細節。謝謝。 –

回答

0

你會想用一個自定義函數來遍歷列表這樣one

def traverse(o, tree_types=(list, tuple)): 
    if isinstance(o, tree_types): 
     for value in o: 
      for subvalue in traverse(value, tree_types): 
       yield subvalue 
    else: 
     yield o 

這將確保無論怎樣嵌套列表,你可以遍歷所有的項目

f=[['string', 'string', '4', '5', '6'], ['string', 'string', '7', '8', '9']] 
print(list(traverse(f))) 
['string', 'string', '4', '5', '6', 'string', 'string', '7', '8', '9'] 

下一頁你會想使用列表理解功能,如is_number

def is_number(s): 
    try: 
     float(s) 
     return float(s) 
    except ValueError: 
     return s 

這將允許你通過數組瀏覽,只有數字轉換成數字acutal

f=[is_number(x) for x in list(traverse(f))] 
['string', 'string', 4.0, 5.0, 6.0, 'string', 'string', 7.0, 8.0, 9.0] 
0

假設所有的元素都string

a = ['a', '9.99'] 
[float(x) for x in a if not x.isalpha()] 
# [9.99] 

如果輸入是一個嵌套列表,你可以先壓平像this

0
import numpy as np 
f= [['1', '5', '8', '2', '7'], ['5', '8', '3', '7', '6']] 
f=np.array(f,float) 

輸出

[[1,5,8,2,7][5,8,3,7,6]] 
+2

請編輯您的帖子以解釋您所做的更改,而不僅僅是代碼和最終結果。我們不是在這裏進行補料,你應該向提問者解釋發生了什麼變化,爲什麼會起作用,原來的錯誤是什麼,爲什麼它很重要?請參閱幫助頁面上的[如何回答](https://stackoverflow.com/help/how-to-answer)。 – spikespaz