2015-12-10 74 views
2

如何返回列表以便列表由字符串而不是列表組成?將列表內的列表更改爲列表中的字符串

這裏是我的嘗試:

def recipe(listofingredients): 
    listofingredients = listofingredients 
    newlist = [] 
    newlist2 = [] 

    for i in listofingredients: 
     listofingredients = i.strip("\n") 
     newlist.append(listofingredients) 

    for i in newlist: 
     newlist = i.split() 
     newlist2.append(newlist) 
    return newlist2 

result = recipe(['12345\n','eggs 4\n','$0.50\n','flour 5\n','$2.00\n']) 
print result 

我的輸出是這樣的:

[['12345'], ['eggs', '4'], ['$0.50'], ['flour', '5'], ['$2.00']] 

所需的輸出:

['12345', 'eggs', '4', '$0.50', 'flour', '5', '$2.00'] 

我知道我的問題是將一個列表附加到另一個列表,但我不知道如何在列表之外使用.strip()和.split()。

+0

那裏有很多奇怪的東西在你的代碼怎麼回事......但要回答你的問題,改變'newlist2.append(newlist)'到'newlist2.extend(newlist)' –

+0

非常感謝! –

回答

1

使用extendsplit:每默認的白色空間

>>> L = ['12345\n','eggs 4\n','$0.50\n','flour 5\n','$2.00\n'] 
>>> res = [] 
>>> for entry in L: 
     res.extend(entry.split()) 
>>> res 
['12345', 'eggs', '4', '$0.50', 'flour', '5', '$2.00'] 

split分裂。用新的線的端部和沒有空間內的字符串被轉換爲一個元素列表:

>>>'12345\n'.split() 
['12345'] 

串與內拼合一個空間分成兩個元素的列表:

>>> 'eggs 4\n'.split() 
['eggs', '4'] 

的方法extend()有助於建立從其他名單列表:

>>> L = [] 
>>> L.extend([1, 2, 3]) 
>>> L 
[1, 2, 3] 
>>> L.extend([4, 5, 6]) 
L 
[1, 2, 3, 4, 5, 6] 
+0

它不適合我:( 感謝您的建議,但! –

+0

適用於您的示例數據。)。 *沒有正常工作*有點太模糊,以改善我的解決方案。 ;) –

+0

我想出了我做錯了什麼!謝謝! –

1

您可以使用這樣的Python的方式。利用list comprehensionstrip()的方法。

recipes = ['12345\n','eggs 4\n','$0.50\n','flour 5\n','$2.00\n'] 
recipes = [recipe.split() for recipe in recipes] 
print sum(recipes, []) 

現在的結果將是

['12345', 'eggs', '4', '$0.50', 'flour', '5', '$2.00'] 

進一步的閱讀 https://stackoverflow.com/a/716482/968442 https://stackoverflow.com/a/716489/968442

+0

謝謝!閱讀您提出的問題非常有幫助! –

相關問題