簡體   English   中英

Python:在一條語句中打印列表中的所有項目

[英]Python: Print all items in list in one statement

我當前的代碼遍歷該list ,並彼此相鄰打印項目ii+1 但是,這導致如下代碼:

for i in list:
    print(str(i) + ': ' + str(i+1))

這段代碼可以打印每個項目,但是由於與項目相關的原因,它們都需要放在一個print語句中,如果手動完成,它將顯示為:

print(str(i) + ': ' + str(i+1) + '\n' + str(i+2) + ': ' + str(i+3) + '\n'...)

這是荒謬的,並且不使用迭代來遍歷列表,這意味着必須將其添加到列表中的每個項目。

因此,我的問題是,如何以這種方式遞歸來做到這一點:先打印項目ii+1 ,然后再打印同一語句下一行的項目i+2i+3 ,依此類推?

要詳細說明“與項目相關的原因”:該項目涉及Discord模塊,它需要將信息導出為在通道中發送的一條消息。 這意味着我無法遍歷每個項目並打印出來,因為那樣會為列表中的每個項目發送一條新消息。

首先,嘗試不要將list用作變量名! 其次,您可以編寫一個生成器函數,該函數貫穿列表arr (從0或1開始)中的第二個項目,並將其join到一個空字符串:

arr=[1,2,3,4,5,6,7,8]
print( ''.join("{0}: {1}\n".format(i,k)  for i,k in zip(arr[0::2], arr[1::2])) )

根據要求,將生成“項目i和i + 1 […],然后是下一行的項目i + 2和i + 3”:

1: 2
3: 4
5: 6
7: 8

但是,這與您的初始代碼不同,因此,您可能寧願意思是“項目i和i + 1 […],然后在下一行輸入項目i + 1和i + 2:

print( ''.join("{0}: {1}\n".format(i,k)  for i,k in zip(arr[0:], arr[1:])) )
print(':'.join((str(i) for i in list)))

或這個

print(''.join(( str(i)+(':'if not i%2 else '\n') for n,i in enumerate(list) )))

你不想要

list_value = ['a','b','c','d','e']
print('\n'.join(('{}: {}'.format(list_value[i],list_value[i+1]) for i in range(len(list_value)-1))))

這使:

a: b
b: c
c: d
d: e

而不是@ user1438644的回答

print(':'.join((str(i) for i in list_value)))

這使:

a:b:c:d:e

這樣的事情會將您的輸出存儲在一個字符串中

output = ''

odd, even = mylist[::2], mylist[1::2]

for i in range(len(even)):
    output += '{}: {}\n'.format(odd[i], even[i])
print(output)

暫無
暫無

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

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