簡體   English   中英

從Python列表中打印項目

[英]Printing items from a list in Python

我正在嘗試用Python編寫一個函數,在其中給了一個列表l = [[2,3],[5,6],[4,8]] ,其中包含其他列表。 我應該將一行中的每個列表中的第一項打印在中間,中間有三個空格,而另一行中的每個列表中的第二項打印在另一行中,中間也有三個空格。 我編寫了以下代碼-但是它似乎可以將所有內容打印在一行上,而且我不確定自己做錯了什么。

l = [[2,3],[5,6],[4,8]]
for item in l:
    print(item[0], end = '  ')
for obj in l:
    print(obj[1], end = '  ') 

這樣可以:

for column in range(2):
    print("   ".join([str(row[column]) for row in l]))
>>> l = [[2,3],[5,6],[4,8]]
>>> for column in range(2):
...     print("   ".join([str(row[column]) for row in l]))
... 
2   5   4
3   6   8

您已經在兩個循環外添加一個換行符,您就可以了:

l = [[2,3],[5,6],[4,8]]
for item in l:
    print(item[0], end = '  ')

print('\n') #take note this needs to be outside both loops

for obj in l:
    print(obj[1], end = '  ')

但是,如果您只是希望它立即出現在下一行,

l = [[2,3],[5,6],[4,8]]
    for item in l:
        print(item[0], end = '  ')

print() #take note this needs to be outside both loops

for obj in l:
   print(obj[1], end = '  ')

由於它是整數,因此要與字符串連接,請使用map

>>> "   ".join(str(item[0]) for item in l)
'2   5   4'
>>> "   ".join(str(item[1]) for item in l)
'3   6   8'

或使用zip

zip-簡單地說,它將子列表中相同索引的所有元素分組到一個列表中。

此函數返回一個元組列表,其中第i個元組包含每個參數序列或可迭代對象中的第i個元素。 返回列表的長度被截斷為最短參數序列的長度。 當有多個長度相同的參數時,zip()類似於map(),其初始參數為None。 使用單個序列參數,它將返回一個1元組的列表。 沒有參數,它將返回一個空列表。

保證了可迭代對象的從左到右的評估順序。 這使得使用zip(* [iter(s)] * n)將數據系列聚類為n個長度的組成為可能。

>>> l
[[2, 3], [5, 6], [4, 8]]
>>> zip(*l)
[(2, 5, 4), (3, 6, 8)]
>>> for each in zip(*l):
...     "    ".join(map(str,each))
... 
'2    5    4'
'3    6    8'

您可以嘗試以下方法:

l = [[2,3],[5,6],[4,8]]
new_l = ["{}   {}   {}".format(*[b[i] for b in l]) for i in range(len(l[0]))]
for i in new_l:
   print(i)

輸出:

2   5   4
3   6   8

由於修改了默認的“ \\ n”作為打印的結束字符,因此需要在循環之間添加print()

實現此目的的另一種方法是:

>>> print(*a[0], sep = "   ")
>>> print(*b[1], sep = "   ")

只需在中間插入打印語句!

l=[[2,3],[4,5],[6,7]]
for item in l:
    print(item[0], end = '  ')
print()
for obj in l:
    print(obj[1], end = '  ') 
>>> ''.join([str(l[i][0])+str("   ") if i!=len(l)-1 else str(l[i][0]) for i in range(len(l))])
'2   5   4'
 >>> ''.join([str(l[i][1])+str("   ") if i!=len(l)-1 else str(l[i][1]) for i in range(len(l))])
'3   6   8'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM