Python:在打印一些数据后将数据打印到新行

时间:2019-01-04 12:03:24

标签: python python-3.x

def printable(l):
    for i in range(len(l)):
        for j in range(len(l[i])):
            print(l[i][j])
        print()
tableData = [['apples', 'oranges', 'cherries', 'banana'],
['Alice', 'Bob', 'Carol', 'David'],
['dogs', 'cats', 'moose', 'goose']]
printable(tableData)

例如,如果我有

之类的数据
bob,sob,cob,dab 

如果我使用循环打印它,它将一一打印出我想要的 在打印了bob和sob之后,我希望光标向上返回,然后打印cob dab

first:print  
      bob  
      sob  
second:then cursor comes back up and print  
      cob  
      dab              
the output i wanted is  
bob cob  
sob dab  

如果我在上述数据中删除了DAB,则输出应为
鲍勃·科布
哭泣
这在Python中可行吗? 谁能提供一个例子

3 个答案:

答案 0 :(得分:1)

你可以

data = [['apples', 'oranges', 'cherries', 'banana'],
        ['Alice', 'Bob', 'Carol', 'David'],
        ['dogs', 'cats', 'moose', 'goose']]

for row in zip(*data):
    print(' '.join(row))

输出

apples Alice dogs
oranges Bob cats
cherries Carol moose
banana David goose

编辑-在长度不相等的情况下扩展答案: 使用itertools.zip_longest()

from itertools import zip_longest
data = [['apples', 'oranges', 'cherries', 'banana'],
['Alice', 'Bob', 'Carol', 'David'],
['dogs', 'cats', 'moose']]

for row in zip_longest(*data, fillvalue=''):
    print(' '.join(row))

输出

apples Alice dogs
oranges Bob cats
cherries Carol moose
banana David

默认填充值为None-如果愿意,可以保留它

答案 1 :(得分:0)

扩展其中一个答案并使用简单列表(bob,sob,cob,dab),您可以根据一维列表中的索引位置使用模,然后附加“ \ n”以创建一个新的适当间距的行:

data = ['bob','sob','cob','dab']
print(' '.join(['\n{}'.format(i) if data.index(i) % 2 == 0 else i for i in data]))

输出:

bob sob 
cob dab

答案 2 :(得分:-1)

https://docs.python.org/3/library/functions.html#print

data = ["Mom", "Dad", "Son", "Daughter"]

for person in data:
    print(person, end='\n')

如果我认为您要尝试做的只是获得一条要在新行上打印的语句,则必须将end=参数添加到print语句中。它不是必需的,但很有用。

如果要在同一行上打印多个名称,则可以使用分隔符参数sep=","在每个名称后添加逗号。 end参数紧随其后,以确保跳至下一行。