Python 3:如何创建列表以在新行上打印其每个元素 - 没有循环或sep =“\ n”

问题描述 投票:-11回答:4

假设我有一个列表'mylist'。例如,我准备这样:

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

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

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

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

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

print(mylist)

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

python python-3.x list
4个回答
2
投票

真的很简单:

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

方法str.join使用字符串来连接迭代。


1
投票

标准的list类型具有许多内置行为,包括在列表周围带括号的表示以及项目(reprs)之间的逗号。根据您指定的语句(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)

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


-2
投票

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

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

-7
投票

我找到了解决方案。

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

mylist = 'AB\nCD\nEF'
print(mylist)
© www.soinside.com 2019 - 2024. All rights reserved.