Python 3:如何创建一个列表来打印它在新行上的每个元素 - 没有循环或sep =" \ n"

时间:2018-01-03 23:32:31

标签: python python-3.x list

我们说我有一个列表' mylist'。例如,我就这样准备了它:

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

我需要打印出' mylist'的每个元素。在一条新线上。 但是,我不允许使用循环(就像在mylist中的i一样......')我不能说:

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

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

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

print(mylist)

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

4 个答案:

答案 0 :(得分:2)

非常简单:

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

方法str.join使用字符串加入iterable。

答案 1 :(得分:1)

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

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

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

答案 3 :(得分:-7)

我找到了解决方案。

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

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