2016-08-10 2 views
4

У меня есть список списков:Печать списка списков в отдельных строках

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 

Любые идеи?

ответ

8

перебирать все подсписком в вашем первоначальном списке и распаковать его в вызове печати с *:

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] 
+0

Большое спасибо! Что делает? – skorada

+0

Он распаковывает содержимое списка на вызов 'print'. 'print (* s)' where 's = [1, 2, 3]' эквивалентно 'print (1, 2, 3)'. –

8

Oneliner:

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' 

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

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

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

2

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

>>> 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 
0
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) 

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

+0

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

Смежные вопросы