【问题标题】:Python: String Concatenation [duplicate]Python:字符串连接[重复]
【发布时间】:2020-12-30 08:06:40
【问题描述】:

我从 Python 开始,正在阅读这本书:Automate The Boring Stuff With Python。

我在第 4 章中做一个叫做逗号代码的练习。我应该能够创建一个简单的函数,它可以采用任何列表,无论长度如何,例如['apples','bananas','tofu','cats'] 并输出为:苹果、香蕉、豆腐和猫;能够在最后一个和倒数第二个列表值之间插入单词 and 的键

我写了一些有用的东西(见下文)。但它以新行而不是一行输出值。

'''Practice Projects - Comma Code'''

def commacode(list_range):
    for i in range(len(list_range)):
        #print(i)
        position = len(list_range) - i
        #print(position)
        list_a = ''
        list_b = ''
        if position != 1:
            #list = ''
            list_a += str(list_range[i]) + ','
            print(list_a)
        else:
            list_b += list_a + ' and ' + str(list_range[i])
    print(list_a + list_b)

rangeoflist = ['apples','bananas','tofu','cats']
commacode(rangeoflist)
#print(rangeoflist)

如何在一行上获得输出?

谢谢

【问题讨论】:

  • print(rangeoflist[:-1], f'and {rangeoflist [-1]}',sep = ", ") ?
  • @Patrick Artner。谢谢。这还不错,但它返回一个列表值,因此它看起来仍然像一个列表。输出:['apples', 'bananas', 'tofu'] 和猫。我可能会去掉“]”和“[”
  • print(*rangeoflist[:-1], f'and {rangeoflist [-1]}',sep = ", ") - 错过了一个星号

标签: python python-3.x list string-concatenation


【解决方案1】:

要在一行中打印句子,请将end='' 添加到第一个print()

'''Practice Projects - Comma Code'''

def commacode(list_range):
    for i in range(len(list_range)):
        position = len(list_range) - i
        list_a = ''
        list_b = ''
        if position != 1:
            list_a += str(list_range[i]) + ','
            print(list_a, end='')                  # <-- add end='' here
        else:
            list_b += list_a + ' and ' + str(list_range[i],)
    print(list_a + list_b)

rangeoflist = ['apples','bananas','tofu','cats']
commacode(rangeoflist)

打印:

apples,bananas,tofu, and cats

使用str.join 可以实现更简单的代码。例如:

rangeoflist = ['apples','bananas','tofu','cats']
print(','.join(rangeoflist[:-1]) + ' and ' + rangeoflist[-1])

打印:

apples,bananas,tofu and cats

【讨论】:

【解决方案2】:

当涉及到字符串时,Python 非常优雅。我使用join 和数组切片。

rangeoflist = ['apples','bananas','tofu','cats']
solution = " and ".join([", ".join(rangeoflist[:-1]), rangeoflist[-1]])
print(solution)

这就是您需要的所有代码。

【讨论】:

    最近更新 更多