如何在同一行中打印列表值?

2022-09-28 20:05:15 发布

您现在位置:Python中文网/ 问答频道 /正文

如何在同一行中只打印列表的值? 我的代码是:

t = int(input())
for case_no in range(1, t+1):
    n = int(input())
    li = list()
    for i in range(1, n+1):
        if n % i == 0:
            li.append(i)
    print("Case {}: {}".format(case_no, li, sep=' ', end=''))

我的输入输出示例结果:

2
6
Case 1: [1, 2, 3, 6]
23
Case 2: [1, 23]

我的预期产出:

2
6
Case 1: 1 2 3 6
23
Case 2: 1 23

Tags: no代码in列表forinputifrangelilistintcaseprintappend
3条回答
网友
1楼 ·

尝试join()将列表转换为字符串-

" ".join(map(str, li))

这里您的列表是一个整数列表,并且join()将iterable的每个字符串元素连接起来,并用一些字符串隔开(在本例中为“”)。所以,首先需要将每个整数转换为一个字符串。map()可以做到。map()接受一个函数,并将其应用于作为第二个参数传递的iterable的每个元素(这里列出li)。因此,map(str, li)将创建一个iterable,其中每个元素都是listli中每个元素的字符串表示

所以,你的台词应该是-

print("Case {}: {}".format(case_no, " ".join(map(str, li)), sep=' ', end=''))

你也可以用生成器表达式-

print("Case {}: {}".format(case_no, " ".join(str(i) for i in li), sep=' ', end=''))

在本例中,您使用的是一个生成器表达式(如果您不知道的话,可以将其看作列表理解)。生成器表达式迭代li的每个元素,并返回该元素的字符串化(不知道这是否是单词)版本。你知道吗

另外,如果你只是想打印列表,而不是为了其他目的而维护它,那么你可以简化一下-

t = int(input())
for case_no in range(1, t+1):
    n = int(input())
    print("Case {}: {}".format(case_no, " ".join(str(i) for i in range(1, n+1) if not n % i), sep=' ', end=''))
网友
2楼 ·

您可以使用print来完成:

data = [[1,2,3,4], [2,4,6]]

for idx,d in enumerate(data,1):
    print( f"Case {idx}:", *d)  # "splat" the list 

印刷品:

Case 1: 1 2 3 4
Case 2: 2 4 6

使用splat(*)(或解包参数列表)操作符提供列表中的所有元素作为要打印的参数:

print( *[1,2,3,4]) == print( 1, 2, 3, 4)
网友
3楼 ·

要么从列表中生成一个字符串,要么需要另一个循环来解析列表。可能还有其他的解决办法。你知道吗

可以在print语句后使用逗号,以避免添加新行。你知道吗

制作字符串:

  print("Case {}: {}".format(case_no, "".join(str(li).split(',')).strip('[]'), sep=' ', end=''))

带回路:

print("Case {}: ".format(case_no)),
for i in li:
    print(i),
print

热门问题