在一行中打印列表项

3
我想在一行中打印列表。使用简单的print可以正常工作,但是f print无法正常工作。请问我该如何处理?谢谢。
list = ["A", "B", "C"]

print(*[n for n in list], sep=", ")

print(f"Item was added: {*[n for n in nazvy]}")

你可以让它更简单。print(*list, sep=", ") 将会给你 A, B, C - Joe Ferndz
这个回答解决了您的问题吗?使用大括号压制解包列表的f-string语法 - Joe Ferndz
4个回答

3
使用 ' '.join
l = ["A", "B", "C"]
print(', '.join(l))
print(f"Item was added: {', '.join(l)}")

输出

A, B, C
Item was added: A, B, C

注意:避免使用内置关键字作为变量名。例如:list


你的代码没有运行,因为f-string不允许使用星号表达式或解包。

同时

print(*[n for n in list], sep=", ")

由于列表解包,它的运行是有效的,并转换为以下内容:

print('A', 'B', 'C', sep=", ")

非常感谢。我想使用f print,但它也适用于这个。print(f"已添加项目:{', ' .join(list)}") - Vladimír Ondrášek

3

str(x) 有什么用处? - Vishnudev Krishnadas
@Vishnudev - str(x) 是一种保险措施 - 防御性编程 - 因此,如果列表包含数字,则每个迭代都会被统一且干净地处理。我建议永远不要假设数据是一种结构或另一种结构,否则将来会有许多重写。 - irnerd
我同意你的观点。但是对于这个问题,原帖中给出了一个具有相同数据结构即str的列表,这将会产生最小的时间开销。此外,这里没有一种代码适用于所有情况,因为列表中的一个项目很可能是另一个列表。考虑到所有可能性是没有边界的。因此,我们遵循KISS(保持简单愚蠢)规则来处理我们现在所拥有的。顺便说一下,想法不错。 :) - Vishnudev Krishnadas

1
使用 "end=" 代替 "sep=";
list = ["A", "B", "C"]
for x in list:
   print(x, end=', ')

0

你可以使用 *list 将每个值发送到打印语句中。通过这种方法,您不必担心将数据转换为字符串。

有了这个,你可以直接给

mylist = ["A", "B", "C", 4, 5, 6]

print(*my_list, sep=", ")

这个的输出将会是:

A, B, C, 4, 5, 6

如果你想使用fstring,你也可以尝试给出:
print(f'{*mylist,}')

这个的输出将会是:

('A', 'B', 'C', 4, 5, 6)

请注意,它会打印带有括号()
有关解包f-string的更多详细信息,请参阅Stackoverflow上的文章here
此外,请尽量避免将变量命名为list。当您想要将数据转换为列表时,这会让人感到困惑。
示例:
x = {1:5,2:10,3:15}
y = list(x)
print (y)

将字典x转换为列表y


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接