【发布时间】:2017-09-13 14:20:17
【问题描述】:
spam = ['apples', 'bananas', 'tofu', 'cats']
def stringmaker(data):
tempdata = 0
datastring = ''
stringlist = []
stringdata = ''
stringdata += ', '.join(data)
stringlist += stringdata.split()
tempdata = stringlist
tempdata = str(stringlist.insert(-1, 'and'))
datastring += ' '.join(stringlist)
print(datastring)
stringmaker(spam)
在 Automate the Boring Stuff with Python page 102 中,练习项目 Comma Code - Comma Code
假设你有一个这样的列表值:spam = ['apples', 'bananas', 'tofu', 'cats'] 编写一个将列表值作为 参数并返回一个字符串,其中所有项目用逗号分隔 和一个空格,在最后一项之前插入和。例如, 将前一个垃圾邮件列表传递给函数将返回 'apples, 香蕉、豆腐和猫。但是你的函数应该能够工作 将任何列表值传递给它。
我编写的代码在本章的上下文中运行并保持不变。我在这个网站和谷歌上查看了其他答案,我很惊讶我的代码有多么不同而且可能很愚蠢。有人可以帮我指出我的代码的所有缺点吗?
我真的希望它尽可能像 Python 和尽可能少的行。
【问题讨论】:
-
如果这是您认为可以改进的工作代码,请参阅Code Review。但请注意,“as pythonic and as few lines” 有时会发生冲突。
-
data[0] if len(data) == 1 else ', and '.join([', '.join(data[:-1]), data[-1]])我会这样做
标签: python string list python-3.x function