解决迭代列表并在每个单词后更改输出的技术

时间:2016-11-27 11:59:11

标签: python python-3.x

这是我的代码

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

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

我需要创建一个函数,该函数返回一个字符串,其中所有项目都用逗号分隔,空格在最后一项之前插入'和'。但我的函数应该能够处理传递给它的任何列表值。我不需要完整的代码来解决我的问题,只是要求技术来解决这个任务!

3 个答案:

答案 0 :(得分:2)

您可以使用join中的str功能。您将列表作为参数传递,并返回作为单个字符串连接的列表。

示例:

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

输出:

'apples, bananas'

然后,您可以使用' and '将前一个字符串与最后一个元素连接起来。

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

输出:

'apples, bananas and lemons'

答案 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'

答案 2 :(得分:0)

我认为这更像是一个与python相关的基本问题。 首先,你应该考虑你想做什么,在你的情况下,你想用逗号分隔你的项目,所以你需要像你正确的那样迭代它们。现在你必须考虑一种方法,将逗号放在每个单词之后,并将其保存在一个新变量中,该变量在最后保存你想要的字符串。 当涉及内存管理时,您应该考虑输出字符串所需的空间 - 例如,当前列表中有3个变量,但是使用逗号和&#39;和&#39;内有新价值。使用insertjoin可以很容易地处理Python 此外,您知道在倒数第二个和最后一个之间您需要单词&#39;和&#39;因此您必须以某种条件(if语句)的形式来考虑这种特殊情况。请注意,这是一种不直接引用python的方法。