[英]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.