当我打印可迭代列表时,它将作为列表返回,但是如果我使用*,它将打印为字符串而不是列表。
numbers = [1, 3, 5, 7, 13]
print(numbers)
#[1, 3, 5, 7, 13]
print(*numbers)
#1 3 5 7 13
通常,如果我使用*解包,它将作为列表返回:
a, *b = numbers
print(b)
#[3, 5, 7, 13]
但是为什么在打印返回中使用*作为字符串?我相信我可能会误会某些东西,或者也许我只是在这里不清楚地了解一些东西
有人可以指出我吗?
为什么print(* iterable_list)作为字符串返回?
print(* iterable_list)的用例是什么?
谢谢
答案 0 :(得分:1)
首先,函数print
始终返回None
,从不返回数字或字符串。
星号运算符将其右操作数(可迭代)转换为参数列表。 print(*numbers)
等同于print(numbers[0],numbers[1],numbers[2],...)
。每个项目均单独打印-在您的情况下为数字。
相反,print(numbers)
将numbers
打印为列表,并具有所有列表格式,例如逗号和方括号。
关于用例,我认为您的示例清楚地说明了区别。
答案 1 :(得分:0)
您刚刚说过*
用于解包。然后,据此,我认为它再次使用*
解压缩列表或其他内容,并保留在此*
中,表示保留逗号分隔的变量,并且默认情况下python print具有sep
按空格排列,因此它返回带有空格分隔值的字符串。
我对此不太确定...但是我认为应该可以使用