python 同时打印多个列表中的所有值

qgzx9mmu  于 2023-03-16  发布在  Python
关注(0)|答案(8)|浏览(169)

假设我有3个这样的列表

l1 = [1,2,3]
l2 = [4,5,6]
l3 = [7,8,9]

我怎样才能同时打印出这些列表中的所有内容呢?,用Python的方法做这样的事情是什么呢?

for f in l1,l2 and l3:
    print f

这似乎只考虑了2个列表。
预期输出:对于所有列表中的每个元素,我使用不同的函数将它们打印出来

def print_row(filename, status, Binary_Type):
    print " %-45s %-15s %25s " % (filename, status, Binary_Type)

在for循环中调用上面的函数。

aor9mmx1

aor9mmx11#

我想你可能需要zip

for x,y,z in zip(l1,l2,l3):
    print x,y,z  #1 4 7
                 #2 5 8
                 #3 6 9

你在做什么:

for f in l1,l2 and l3:

有点奇怪,它基本上等价于for f in (l1,l3):,因为l2 and l3返回l3(假设l2l3都非空--否则,它将返回空的)。
如果您只想连续打印每个列表,可以执行以下操作:

for lst in (l1,l2,l3):  #parenthesis unnecessary, but I like them...
    print lst   #[ 1, 2, 3 ]
                #[ 4, 5, 6 ]
                #[ 7, 8, 9 ]
ru9i0ody

ru9i0ody2#

不需要使用zip,只需要使用+操作符将它们加在一起。l1 + l2 + l3创建了一个新的列表,它是l1l2l3的组合,因此您可以简单地循环通过该列表,如下所示:

for f in l1+l2+l3:
    print(f)

你对and操作符的使用是不正确的。你的代码不能工作的另一个原因是使用逗号(比如l1, l2, l3)创建了一个元组,它是一个容器,现在保存了你的3个列表。所以当你试图循环通过l1, l2, l3时,它会循环通过元组中的每个元素(列表),而不是你想要的列表中的每个元素。

bprjcwpo

bprjcwpo3#

如果你想打印
执行:

for i,j,k in zip(l1,l2,l3):
    print i,j,k
rnmwe5a2

rnmwe5a24#

这取决于你想达到什么目标,

>>> #Given
>>> l1,l2,l3 = [1,2,3],[4,5,6],[7,8,9]
>>> #To print row wise
>>> import itertools
>>> for f in itertools.chain(l1,l2,l3):
    print(f,end=" ")

1 2 3 4 5 6 7 8 9 
>>> #To print column wise
>>> for f in itertools.izip(l1,l2,l3):
    print(*f,end=" ")

1 4 7 2 5 8 3 6 9 
>>>

或者下面的在Python 2.7中有效的实现

>>> for f in itertools.chain(*itertools.izip(l1,l2,l3)):
    print f,

1 4 7 2 5 8 3 6 9 
>>>
evrscar2

evrscar25#

如果你的列表长度不一样,那么使用map会更好:

>>> l1 = [1, 2, 3]
>>> l2 = [4, 5, 6]
>>> l3 = [7, 8, 9, 2]
>>> for x, y, z in map( None, l1, l2, l3):
...     print x, y, z
...
1 4 7
2 5 8
3 6 9
None None 2
plicqrtu

plicqrtu6#

要在Abhijit答案的基础上进行扩展,您可以使用itertools生成器作为列表解析中的可迭代对象。

>>> [ n for n in itertools.chain(l1, l2, l3) ]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
vyu0f0g1

vyu0f0g17#

如果你的意思是你有3个等长的列表,并且你想把它们的内容打印成3列,那么在每次迭代中用zip()连接列和用print()解析列表怎么样?

[ print(row) for row in zip(l1, l2, l3) ]

上面的代码将打印元组的repr。如果你想格式化这些值:

[ print("{} / {} / {}".format(*row)) for row in zip(l1, l2, l3) ]

没有人说你必须 * 使用 * 列表解析的输出。

djmepvbi

djmepvbi8#

我更喜欢使用三个带 if 条件的 for 循环。

l1 = [1,2,3]
l2 = [4,5,6]
l3 = [7,8,9]
total = []
for x in range(len(l1)):
    for y in range(len(l2)):
        for z in range(len(l3)):
            if x == y and x == z:
                total.append(str(l1[x]) + " " + str(l2[y]) + " " + str(l3[z]))

print(total)

for i in range(len(total)):
    print(total[i])

相关问题