Printing all the values from multiple lists at the same time

后端 未结 7 1883
遥遥无期
遥遥无期 2020-12-19 05:02

Suppose I have 3 lists such as these

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

how do I get to print out everything from these lists at the s

相关标签:
7条回答
  • 2020-12-19 05:36

    I think you might want zip:

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

    What you're doing:

    for f in l1,l2 and l3:
    

    is a little strange. It is basically equivalent to for f in (l1,l3): since l2 and l3 returns l3 (assuming that l2 and l3 are both non-empty -- Otherwise, it will return the empty one.)

    If you just want to print each list consecutively, you can do:

    for lst in (l1,l2,l3):  #parenthesis unnecessary, but I like them...
        print lst   #[ 1, 2, 3 ]
                    #[ 4, 5, 6 ]
                    #[ 7, 8, 9 ]
    
    0 讨论(0)
  • 2020-12-19 05:39

    No need to use zip, just add them together using the + operator. l1 + l2 + l3 creates a new list that is the combination of l1, l2 and l3 so you can simply loop through that, like so:

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

    Your use of the and operator is incorrect. The other reason why your code doesn't work is using commas (like l1, l2, l3) creates a tuple, which is a container that now holds your 3 lists. So when you try to loop through l1, l2, l3 it will loop through every element in that tuple (which are the lists) and not through every element in the lists as you intend.

    0 讨论(0)
  • 2020-12-19 05:45

    If you want to print

    1 4 7
    2 5 8
    3 6 9
    

    Do:

    for i,j,k in zip(l1,l2,l3):
        print i,j,k
    
    0 讨论(0)
  • 2020-12-19 05:49

    It depends on what you want to achieve,

    >>> #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 
    >>> 
    

    or the following implementation which will work in Python 2.7

    >>> for f in itertools.chain(*itertools.izip(l1,l2,l3)):
        print f,
    
    
    1 4 7 2 5 8 3 6 9 
    >>> 
    
    0 讨论(0)
  • 2020-12-19 05:53

    It you're lists are not all the same length it is often better to use 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
    
    0 讨论(0)
  • 2020-12-19 05:58

    To expand on top of Abhijit answer, you could use the itertools generator as the iterable within a list comprehension.

    >>> [ n for n in itertools.chain(l1, l2, l3) ]
    [1, 2, 3, 4, 5, 6, 7, 8, 9]
    
    0 讨论(0)
提交回复
热议问题