【问题标题】:Python 3: How to create a list to print its every element on a new line - without loops or sep = "\n"Python 3:如何创建一个列表以在新行上打印其每个元素 - 没有循环或 sep = "\n"
【发布时间】:2018-06-13 16:10:00
【问题描述】:

假设我有一个列表“mylist”。例如,我是这样准备的:

mylist = ['AB', 'CD', 'EF']

我需要在新行上打印出 'mylist' 的每个元素。 但是,我不允许使用循环(如'for i in mylist...'),我不能说:

print(*mylist, sep = "\n")

虽然最后一个命令给出了我需要的输出。

不,我必须以某种方式创建/准备“mylist”,以便根据以下命令实现所需的打印输出:

print(mylist)

有可能吗? 请注意,这不是重复的帖子 - 它更多的是关于如何格式化列表的开头,而不是关于打印本身。

【问题讨论】:

  • 我觉得这是一个练习,可以教你重新定义现有的功能。

标签: python python-3.x list


【解决方案1】:

真的很简单:

print ("\n".join(mylist))

str.join 方法使用字符串连接一个可迭代对象。

【讨论】:

  • 此答案不满足所提问题的条件。
  • 在什么情况下不满足条件?
  • I need to print out each element of 'mylist' on a new line. However, I am not allowed to use loops (as in 'for i in mylist...') and I can't say:
  • 我的问题是:“不,我必须以某种方式创建/准备'mylist',以便根据以下命令实现所需的打印输出:print(mylist)”
  • 然后做一些简单的事情,比如mylist="\n".join(mylist)。如果您询问列表处理,我们无法教您基本的 Python...
【解决方案2】:

标准的list 类型具有许多内置行为,包括用括号括住列表的表示形式以及在(reprs of)项目之间的逗号。无法从您指定的语句 (print(mylist)) 中获得您想要的行为,并且使用标准的 list 类型。

您可以定义一个类MyList,其__str__() 方法会生成所需的格式:

class MyList(list):
    def __str__(self):
       return "\n".join(self)

mylist = MyList(['AB', 'CD', 'EF'])

print(mylist)

或者你可以重新定义print()

def print(*args, print=print, **kwargs):
    if type(args[0]) is list and len(args) == 1:
        args = ["\n".join(args[0])]
    print(*args, **kwargs)

无论哪种方式都只是将代码隐藏在其他地方,以便遵守一些关于允许编写内容的任意规则。如果你打算这样做,在课堂上可能是更容易接受的地方。

【讨论】:

    【解决方案3】:

    您也可以在新行上打印分隔的每个元素,例如:

    print(mylist[0]), print(mylist[1])
    

    【讨论】:

    • 不,正如我在问题中所说,它必须根据需要打印:print(mylist)
    • 不,你没有没有那样陈述你的问题。你说你需要预先格式化你的列表。这是一个灵活的术语。
    【解决方案4】:

    我找到了解决办法。

    'mylist' 不应该是一个列表,它应该被创建为这样的字符串 - 然后它会根据需要打印:

    mylist = 'AB\nCD\nEF'
    print(mylist)
    

    【讨论】:

    • 这不符合您自己问题的条件,因为您的问题是关于打印列表。
    • 另外,你不能使用'\n'作为分隔符,对吧?
    猜你喜欢
    • 1970-01-01
    • 2019-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-21
    • 2021-04-18
    • 1970-01-01
    相关资源
    最近更新 更多