簡體   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