![](/img/trans.png)
[英]Python3, If one of the items in the list found "print it" else print "not found"
[英]Python: Print all items in list in one statement
我當前的代碼遍歷該list
,並彼此相鄰打印項目i
和i+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'...)
這是荒謬的,並且不使用迭代來遍歷列表,這意味着必須將其添加到列表中的每個項目。
因此,我的問題是,如何以這種方式遞歸來做到這一點:先打印項目i
和i+1
,然后再打印同一語句下一行的項目i+2
和i+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.