2016-11-27 107 views
-2

這裏是我的代碼解決技術

spam = ['apples', 'bananas', 'lemons'] 

def funcc(spam): 
    for i in range(len(spam) - 1): 
     print(spam[i], ',') 
    print('and', spam[-1]) 

我需要它返回一個字符串,全部由一個逗號和用「空格分隔的項目功能和'插入最後一項之前。但我的函數應該能夠處理傳遞給它的任何列表值。我不需要完整的代碼來解決我的問題,只需要技術來解決這個任務!

回答

1

您可以使用str.join()加入列表,並明確增加 「和」 使用str.format()作爲最後一個元素:

spam = ['apples', 'bananas', 'lemons'] 
# Join all elements with `, ` excluding last element 
#            v  
new_string = '{} and {}'.format(', '.join(spam[:-1]), spam[-1]) 
#    ^explicitly add `"and"` to the joined string 
#     with the last element 

通過new_string值保持爲:

'apples, bananas and lemons' 

說明:

值由str.join()

>>> ', '.join(spam[:-1]) 
'apples, bananas' 

因此返回,傳遞給str.format()值將是:

>>> '{} and {}'.format('apples, bananas', 'lemons') 
'apples, bananas and lemons' 
+0

@Downvoter無論您何時回覆任何答案,也請留下評論。可能根據你的意見我可以寫更好的答案(包括這個和我將來寫的答案):) –

2

您可以從str使用功能join。您將一個列表作爲參數傳遞並返回作爲單個字符串連接的列表。

例子:

spam = ['apples', 'bananas', 'lemons'] 
', '.join(spam[:-1]) 

輸出:

'apples, bananas' 

然後你就可以連接以前的字符串使用' and '的最後一個元素。

', '.join(spam[:-1]) + ' and ' + spam[-1] 

輸出:

'apples, bananas and lemons' 
0

我覺得這是更喜歡它genereous問題是有關蟒蛇。 首先,你應該考慮你想做什麼,在你的情況下你想用逗號分開你的項目,所以你需要像你做的那樣迭代它們。現在,您必須考慮一種方法,將逗號放在每個單詞後面,並將其保存在一個新的變量中,該變量最後保存了您想要的字符串。 當涉及到內存管理時,您應該考慮輸出字符串所需的空間 - 例如,當前列表中有3個變量,但逗號和'和'會在其中添加新值。 Python很容易用insertjoinjoin 來處理,而且,你知道在第二個和最後一個之間你想要單詞'和',因此你必須以某種形式的條件if語句)。請注意,這是一種不直接引用python的方法。