我当前的代码遍历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模块,它需要将信息导出为通道中发送的一条消息。这意味着我无法遍历每个项目并打印出来,因为那样会为列表中的每个项目发送一条新消息。
答案 0 :(得分:2)
首先,尝试不要将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:])) )
答案 1 :(得分: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) )))
答案 2 :(得分:0)
您不需要
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
答案 3 :(得分:0)
类似的东西会将您的输出存储在一个字符串中
output = ''
odd, even = mylist[::2], mylist[1::2]
for i in range(len(even)):
output += '{}: {}\n'.format(odd[i], even[i])
print(output)