Python:在一条语句中打印列表中的所有项目

时间:2019-04-23 23:08:42

标签: python python-3.x

我当前的代码遍历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模块,它需要将信息导出为通道中发送的一条消息。这意味着我无法遍历每个项目并打印出来,因为那样会为列表中的每个项目发送一条新消息。

4 个答案:

答案 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)