首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在字符串列表中的最后一项前添加'and‘

在字符串列表中的最后一项前添加'and‘
EN

Stack Overflow用户
提问于 2015-04-19 15:50:36
回答 2查看 1.7K关注 0票数 1

好的,所以我正在尝试创建一个函数,它将接收一个项目列表并返回(而不是打印!)该列表中的字符串,在列表中的最后一项之前用逗号分隔。到目前为止,我的脚本如下:

代码语言:javascript
复制
rose1 = Thing("red rose", "flowerbox")
rose2 = Thing("pink rose","garden")
rose3 = Thing("white rose", "vase")

def text_list(things):
    """Takes a sequence of Things and returns a formatted string that describes all of the things.

    Things -> string"""
    names=[o.name for o in things]
    if len(names) == 0:
        return 'nothing'
    elif len(names) == 2:
        names = ' and the '.join(names)
        return 'the ' + names
    else:   #Here's where I need help!
        names = ', the '.join(names)
        return 'the ' + names

在这一点上,函数返回“红玫瑰,粉红色玫瑰,白色玫瑰”,这很好,但我需要最后一个,和“被放置在粉红色玫瑰和白色玫瑰之间,我不能使用打印。”有什么帮助吗?这可能很简单,我完全错过了OTL

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-19 16:05:41

检查以下内容是否足以满足您的要求。

代码语言:javascript
复制
names=[o.name for o in things[:-1]]
last_name = things[-1].name

使用“名称”列表的逻辑获取result_string,并最终将last_name追加到字符串中。

代码语言:javascript
复制
return result_string + ' and the ' + last_name
票数 2
EN

Stack Overflow用户

发布于 2022-05-12 15:48:06

你可以用一行来做:

代码语言:javascript
复制
print(', '.join([*lst[:-1], f'and {lst[-1]}']))

例如:

代码语言:javascript
复制
a_list = ['a', 'b', 'c']
print(', '.join([*a_list[:-1], f'and {a_list[-1]}']))

这就产生了结果

代码语言:javascript
复制
a, b, and c

当然,如果列表由单个项目或空列表组成,这将不会给出所需的结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29732091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档