这是我的代码
spam = ['apples', 'bananas', 'lemons']
def funcc(spam):
for i in range(len(spam) - 1):
print(spam[i], ',')
print('and', spam[-1])
我需要创建一个函数,该函数返回一个字符串,其中所有项目都用逗号分隔,空格在最后一项之前插入'和'。但我的函数应该能够处理传递给它的任何列表值。我不需要完整的代码来解决我的问题,只是要求技术来解决这个任务!
答案 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;内有新价值。使用insert
或join
可以很容易地处理Python
此外,您知道在倒数第二个和最后一个之间您需要单词&#39;和&#39;因此您必须以某种条件(if语句)的形式来考虑这种特殊情况。请注意,这是一种不直接引用python的方法。