Распечатать список списков в отдельных строках

У меня есть список списков:

a = [[1, 3, 4], [2, 5, 7]]

Мне нужен вывод в следующем формате:

1 3 4
2 5 7

Я пробовал это следующим образом, но результаты не таковы, как хотелось бы:

for i in a:
    for j in i:
        print(j, sep=' ')

Выходы:

1
3
4
2
5
7

При изменении вызова печати для использования end вместо этого:

for i in a:
    for j in i:
        print(j, end = ' ')

Выходы:

1 3 4 2 5 7

Любые идеи?


person skorada    schedule 10.08.2016    source источник


Ответы (9)


Переберите каждый подсписок в исходном списке и распакуйте его в вызове печати с помощью *:

a = [[1, 3, 4], [2, 5, 7]]
for s in a:
    print(*s)

Разделение по умолчанию установлено на ' ', поэтому нет необходимости указывать его явно. Это печатает:

1 3 4
2 5 7

В вашем подходе вы выполняли итерацию для каждого элемента в каждом подсписке и печатали его по отдельности. Используя print(*s), вы распаковываете список внутри вызова печати, что по сути означает:

print(1, 3, 4)  # for s = [1, 2, 3]
print(2, 5, 7)  # for s = [2, 5, 7]
person Dimitris Fasarakis Hilliard    schedule 10.08.2016

один лайнер:

print('\n'.join(' '.join(map(str,sl)) for sl in l))

объяснение:
вы можете преобразовать list в str с помощью функции соединения:

l = ['1','2','3']
' '.join(l) # will give you a next string: '1 2 3'
'.'.join(l) # and it will give you '1.2.3'

поэтому, если вам нужны разрывы строк, вы должны использовать символ новой строки.
Но соединение принимает только список строк. Для преобразования списка вещей в список строк вы можете применить функцию str для каждого элемента в списке:

l = [1,2,3]
' '.join(map(str, l)) # will return string '1 2 3'

И мы применяем эту конструкцию для каждого подсписка sl в списке l

person ailin    schedule 10.08.2016

Ты можешь это сделать:

>>> lst = [[1, 3, 4], [2, 5, 7]]
>>> for sublst in lst:
...     for item in sublst:
...             print item,        # note the ending ','
...     print                      # print a newline
... 
1 3 4
2 5 7
person nalzok    schedule 10.08.2016

a = [[1, 3, 4], [2, 5, 7]]
for i in a:
    for j in i:
        print(j, end = ' ')
    print('',sep='\n')

выход:

1 3 4
2 5 7
person Rajasheker Reddy Dommata    schedule 10.07.2020
comment
Пожалуйста, добавьте описание к вашему ответу и объясните, как он работает и решает проблему. - person Amit Verma; 10.07.2020
comment
Ваш последний отпечаток совершенно сбивает с толку без всякой причины. print('',sep='\n') == print()... - person Tomerikoo; 21.06.2021

lst = [[1, 3, 4], [2, 5, 7]]
 
def f(lst ):
    yield from lst


for x in f(lst):
    print(*x) 

используя доход от...

Производит вывод

1 3 4
2 5 7

[Program finished] 
person Subham    schedule 19.02.2021

Существует альтернативный метод отображения списка, а не упорядочения их в подсписке:

tick_tack_display = ['1', '2', '3', '4', '5', '6', '7', '8', '9']

loop_start = 0
count = 0
while loop_start < len(tick_tack_display):
     print(tick_tack_display[loop_start], end = '')
     count +=1
     if count - 3 == 0:
       print("\n")
       count = 0
     loop_start += 1

ВЫХОД :

123
456
789
person Arslan Ahmad    schedule 24.12.2020

Я считаю, что это довольно просто:

a = [[1, 3, 4], [2, 5, 7]]   # defines the list
    
for i in range(len(a)):      # runs for every "sub-list" in a
    for j in a[i]:           # gives j the value of each item in a[i]
        print(j, end=" ")    # prints j without going to a new line
    print()                  # creates a new line after each list-in-list prints

выход

1 3 4 
2 5 7 
person Richard Gonzalez    schedule 05.06.2020

def print_list(s):
    for i in range(len(s)):
        if isinstance(s[i],list):
            k=s[i]
            print_list(k)
        else:
            print(s[i])
            
s=[[1,2,[3,4,[5,6]],7,8]]
print_list(s)

вы можете вводить списки внутри списков внутри списков ..... и все же все будет напечатано так, как вы ожидаете.

Выход:

1
2
3
4
5
6
7
8
person Vinit Pillai    schedule 18.01.2018
comment
Пожалуйста, прочитайте вопрос еще раз, так как этот ответ не решает проблему вопроса. - person DuDa; 19.02.2021

Есть более простой однострочный способ:

a = [[1, 3, 4], [2, 5, 7]] # your data
[print(*x) for x in a][0] # one-line print

И результат будет таким, как вы хотите:

1 3 4
2 5 7

Убедитесь, что вы добавили [0] в конец понимания списка, иначе последняя строка будет списком из None значений, равных длине вашего списка.

person Amir Hossein Hajianpour    schedule 12.05.2021