【问题标题】:Print list without brackets in a single row在单行中打印不带括号的列表
【发布时间】:2012-06-26 01:01:59
【问题描述】:

我有一个 Python 列表 例如

names = ["Sam", "Peter", "James", "Julian", "Ann"]

我想在一行中打印数组,没有普通的“ []

names = ["Sam", "Peter", "James", "Julian", "Ann"]
print (names)

将输出为;

["Sam", "Peter", "James", "Julian", "Ann"]

这不是我想要的格式,而是我希望它是这样的;

Sam, Peter, James, Julian, Ann

注意:必须在一行中。

【问题讨论】:

    标签: python list


    【解决方案1】:
    print(', '.join(names))
    

    就像听起来一样,这只是获取列表中的所有元素并将它们与', ' 连接起来。

    【讨论】:

    • 如果names 中的某些元素不是字符串,请改用print(', '.join(map(str,name)))
    • 这条评论很有用。
    【解决方案2】:

    这是一个简单的。

    names = ["Sam", "Peter", "James", "Julian", "Ann"]
    print(*names, sep=", ")
    

    星号解包列表并返回列表中的每个元素。

    【讨论】:

    • python 2.7.6,这是SyntaxError: invalid syntax
    • @FredrickGauss 如果你添加 from __future__ import print_function 它也可以在 python 2 中工作。
    • 这是正确的答案,因为它也适用于非字符串。
    【解决方案3】:

    通用解决方案,适用于非字符串数组:

    >>> print str(names)[1:-1]
    'Sam', 'Peter', 'James', 'Julian', 'Ann'
    

    【讨论】:

    • 这不符合规定的要求。请注意 OP 的示例,该示例显示了不带引号的结果名称。
    • @SteveBennett 能否解释一下答案中的切片 [1:-1]。我刚开始学习python。谢谢。
    • str(names) 生成类似['Sam', 'Peter'...'Ann'] 的字符串。我们不想要方括号,因此从第二个字符切到倒数第二个字符。
    【解决方案4】:

    如果输入数组是整数类型,则需要先将数组转换为字符串类型数组,然后使用join方法与,或空间任何你想要的。例如:

    >>> arr = [1, 2, 4, 3]
    >>> print(", " . join(arr))
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: sequence item 0: expected string, int found
    >>> sarr = [str(a) for a in arr]
    >>> print(", " . join(sarr))
    1, 2, 4, 3
    >>>
    

    直接使用join会连接整数和字符串会抛出如上所示的错误。

    【讨论】:

      【解决方案5】:

      有两个答案,第一个是使用'sep'设置

      >>> print(*names, sep = ', ')
      

      另一个在下面

      >>> print(', '.join(names))
      

      【讨论】:

        【解决方案6】:

        这是你需要的

        ", ".join(names)
        

        【讨论】:

        • 它将结果用引号括起来。
        【解决方案7】:

        ','.join(list) 仅当列表中的所有项目都是字符串时才有效。如果您希望将数字列表转换为逗号分隔的字符串。比如a = [1, 2, 3, 4]变成'1,2,3,4'那么你可以

        str(a)[1:-1] # '1, 2, 3, 4'
        

        str(a).lstrip('[').rstrip(']') # '1, 2, 3, 4'
        

        虽然这不会删除任何嵌套列表。

        将其转换回列表

        a = '1,2,3,4'
        import ast
        ast.literal_eval('['+a+']')
        #[1, 2, 3, 4]
        

        【讨论】:

          【解决方案8】:

          对于整数类型的数组,我们需要先将其更改为字符串类型,然后使用连接函数获得不带括号的干净输出。

              arr = [1, 2, 3, 4, 5]    
              print(', '.join(map(str, arr)))
          

          输出 - 1、2、3、4、5

          对于字符串类型的数组,我们需要直接使用join函数来得到不带括号的干净输出。

              arr = ["Ram", "Mohan", "Shyam", "Dilip", "Sohan"]
              print(', '.join(arr)
          

          输出 - Ram、Mohan、Shyam、Dilip、Sohan

          【讨论】:

            【解决方案9】:

            尝试在打印语句的列表名称前使用星号:

            names = ["Sam", "Peter", "James", "Julian", "Ann"]  
            print(*names)
            

            输出:

            Sam Peter James Julian Ann
            

            【讨论】:

            • 哇,这太棒了!
            【解决方案10】:

            打印(*名称)

            这将在 python 3 中工作 如果您希望它们以空格分隔的形式打印出来。 如果您需要逗号或其他任何内容,请继续使用 .join() 解决方案

            【讨论】:

              【解决方案11】:

              您需要遍历列表并使用end=" "将其保持在一行

              names = ["Sam", "Peter", "James", "Julian", "Ann"]
                  index=0
                  for name in names:
                      print(names[index], end=", ")
                      index += 1
              

              【讨论】:

              • OP 说它必须在一行中。
              【解决方案12】:

              我不知道这是否像其他人一样有效,但简单的逻辑总是有效的:

              import sys
              name = ["Sam", "Peter", "James", "Julian", "Ann"]
              for i in range(0, len(names)):
                  sys.stdout.write(names[i])
                  if i != len(names)-1:
                      sys.stdout.write(", ")
              

              输出:

              山姆、彼得、詹姆斯、朱利安、安

              【讨论】:

                【解决方案13】:

                以下函数将接收一个列表并返回列表项的字符串。 然后可以将其用于记录或打印目的。

                def listToString(inList):
                    outString = ''
                    if len(inList)==1:
                        outString = outString+str(inList[0])
                    if len(inList)>1:
                        outString = outString+str(inList[0])
                        for items in inList[1:]:
                            outString = outString+', '+str(items)
                    return outString
                

                【讨论】:

                  猜你喜欢
                  • 2012-01-12
                  • 2020-04-12
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多