打印以逗号分隔的列表,不带尾随逗号

2025-03-21 09:07:00
admin
原创
59
摘要:问题描述:我正在编写一段代码,该代码应输出以逗号分隔的项目列表。该列表是通过for循环生成的:for x in range(5): print(x, end=",") 问题是我不知道如何删除列表中最后一个条目添加的最后一个逗号。它输出以下内容:0,1,2,3,4, 我该如何删除结尾...

问题描述:

我正在编写一段代码,该代码应输出以逗号分隔的项目列表。该列表是通过for循环生成的:

for x in range(5):
    print(x, end=",")

问题是我不知道如何删除列表中最后一个条目添加的最后一个逗号。它输出以下内容:

0,1,2,3,4,

我该如何删除结尾,


此处的大多数方法都基于使用单个print调用。为了对每个x值使用单独的调用,最后一个调用必须以不同的方式处理。这也可以做到 - 请参阅什么是检测“for”循环中最后一个元素的 Python 方式? - 但是,使用print特定功能可以更好地解决这个特定问题。


解决方案 1:

sep=","作为参数传递给print()

您几乎已经完成了打印声明。

不需要循环,printsep也有参数end

>>> print(*range(5), sep=", ")
0, 1, 2, 3, 4

一点解释

内置函数print接受任意数量的项目作为要打印的参数。任何非关键字参数都将被打印,并以 分隔sep。 的默认值为sep一个空格。

>>> print("hello", "world")
hello world

改变sep已经有了预期的结果。

>>> print("hello", "world", sep=" cruel ")
hello cruel world

每个参数都像 一样被字符串化str()。将可迭代对象传递给 print 语句将会把可迭代对象字符串化为一个参数。

>>> print(["hello", "world"], sep=" cruel ")
['hello', 'world']

但是,如果将星号放在可迭代对象前面,则会将其分解为单独的参数,并允许预期的用途sep

>>> print(*["hello", "world"], sep=" cruel ")
hello cruel world

>>> print(*range(5), sep="---")
0---1---2---3---4

join作为替代方案

将可迭代对象连接到具有给定分隔符的字符串的替代方法是使用join分隔符字符串的方法。

>>>print(" cruel ".join(["hello", "world"]))
hello cruel world

这稍微笨拙一些,因为它需要将非字符串元素明确转换为字符串。

>>>print(",".join([str(i) for i in range(5)]))
0,1,2,3,4

暴力破解——非 Python 风格

您建议的方法是使用循环连接字符串,并在连接过程中添加逗号。当然,这会产生正确的结果,但工作量要大得多。

>>>iterable = range(5)
>>>result = ""
>>>for i, item in enumerate(iterable):
>>>    result = result + str(item)
>>>    if i > len(iterable) - 1:
>>>        result = result + ","
>>>print(result)
0,1,2,3,4

解决方案 2:

您可以使用str.join()并创建要打印的字符串,然后打印它。示例 -

print(','.join([str(x) for x in range(5)]))

演示 -

>>> print(','.join([str(x) for x in range(5)]))
0,1,2,3,4

我在上面使用了列表推导,因为与一起使用时,它比生成器表达式更快str.join

解决方案 3:

为此,您可以使用str.join()

In [1]: print ','.join(map(str,range(5)))
0,1,2,3,4

我们需要range(5)先将 中的数字转换为字符串才能调用str.join()。我们使用 操作来实现这一点。然后我们用逗号map()连接从 中获得的字符串列表。map()`,`

解决方案 4:

您可以使用的另一种形式,更接近您的原始代码:

opt_comma="" # no comma on first print
for x in range(5):
    print (opt_comma,x,sep="",end="") # we are manually handling sep and end
    opt_comma="," # use comma for prints after the first one
print() # force new line

当然,本主题中其他更符合 Python 风格的答案可能更能满足您程序的目的。不过,在某些情况下,这可能是一种有用的方法。

另一种可能性:

for x in range(5):
    if x:
        print (", ",x,end="")
    else:
        print (x, end="")
print()

解决方案 5:

for n in range(5):
    if n == (5-1):
        print(n, end='')
    else:
        print(n, end=',')

解决方案 6:

示例代码:

for i in range(10):
    if i != 9:
        print(i, end=", ")
    else:
        print(i)

结果:

0, 1, 2, 3, 4, 5, 6, 7, 8, 9

解决方案 7:

for x in range(5):
    print(x, end=",")
print("");

解决方案 8:

  1. 列表项

''' 检查您的元素是否不是最后一个(索引= -1)并且仅添加逗号:

    for i in lista:
        if i != lista[-1]:
            print((i), end= ", ")
    else:
        print((i), end=" ")
相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   2482  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1533  
  PLM(产品生命周期管理)项目对于企业优化产品研发流程、提升产品质量以及增强市场竞争力具有至关重要的意义。然而,在项目推进过程中,范围蔓延是一个常见且棘手的问题,它可能导致项目进度延迟、成本超支以及质量下降等一系列不良后果。因此,有效避免PLM项目范围蔓延成为项目成功的关键因素之一。以下将详细阐述三大管控策略,助力企业...
plm系统   0  
  PLM(产品生命周期管理)项目管理在企业产品研发与管理过程中扮演着至关重要的角色。随着市场竞争的加剧和产品复杂度的提升,PLM项目面临着诸多风险。准确量化风险优先级并采取有效措施应对,是确保项目成功的关键。五维评估矩阵作为一种有效的风险评估工具,能帮助项目管理者全面、系统地评估风险,为决策提供有力支持。五维评估矩阵概述...
免费plm软件   0  
  引言PLM(产品生命周期管理)开发流程对于企业产品的全生命周期管控至关重要。它涵盖了从产品概念设计到退役的各个阶段,直接影响着产品质量、开发周期以及企业的市场竞争力。在当今快速发展的科技环境下,客户对产品质量的要求日益提高,市场竞争也愈发激烈,这就使得优化PLM开发流程成为企业的必然选择。缺陷管理工具和六西格玛方法作为...
plm产品全生命周期管理   0  
热门文章
项目管理软件有哪些?
曾咪二维码

扫码咨询,免费领取项目管理大礼包!

云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用