2016-08-10 131 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)'其中's = [1,2,3]'相當於'print(1,2,3)'。 –

8

oneliner:

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

解釋:
您可以通過使用連接函數轉換liststr

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' 

而我們在列表應用這種結構對每個子列表sll

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) 

,你可以在列表內列表中的輸入列表.....,但如u希望它是一切都將被打印出來。

+0

你可以在清單內的列表中輸入清單.....然而一切都會按照你的期望打印。 –