假设我有一个列表'mylist'。例如,我准备这样:
mylist = ['AB', 'CD', 'EF']
我需要在新行上打印出“mylist”的每个元素。但是,我不允许使用循环(如'for in in mylist ......')我不能说:
print(*mylist, sep = "\n")
虽然最后一个命令提供了我需要的输出。
不,我必须以某种方式创建/准备'mylist',以便根据以下命令实现所需的打印输出:
print(mylist)
它甚至可能吗?请注意,这不是一个重复的帖子 - 它更多的是关于如何格式化列表开始,而不是打印本身。
真的很简单:
print ("\n".join(mylist))
方法str.join
使用字符串来连接迭代。
标准的list
类型具有许多内置行为,包括在列表周围带括号的表示以及项目(repr
s)之间的逗号。根据您指定的语句(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)
无论哪种方式只是将代码隐藏在其他地方,以便坚持一些关于你允许写什么的任意规则。如果你打算这样做,在课堂上可能是更容易接受它的地方。
您可以在新行上打印分隔的每个元素,例如:
print(mylist[0]), print(mylist[1])
我找到了解决方案。
'mylist'不应该是一个列表,应该像这样创建一个字符串 - 然后根据需要打印:
mylist = 'AB\nCD\nEF'
print(mylist)