繁体   English   中英

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

[英]How to print list value in same line?

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

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

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

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

这里您的列表是一个整数列表, join()连接由某个字符串(在本例中为“”)分隔的可迭代对象的每个字符串元素。 因此,您需要先将每个整数转换为字符串。 map()可以做到这一点。 map()接受一个函数并将其应用于作为第二个参数传递的可迭代对象的每个元素(此处为列表li )。 因此, map(str, li)将创建一个可迭代对象,其中每个元素都是列表li中每个元素的字符串表示

所以,你的台词是——

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=''))

您可以使用打印来做到这一点:

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)

要么从列表中创建一个字符串,要么需要另一个循环来解析列表。 可能还有其他解决方案。

您可以在打印语句后使用逗号以避免添加新行。

制作字符串:

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

带循环:

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

您可以将列表中的元素作为字符串li.append(str(i))然后加入" ".join(li)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM