如何使用“将打印输出转换为变量/字符串”;超过3个参数“;?(python 3)

如何使用“将打印输出转换为变量/字符串”;超过3个参数“;?(python 3),python,string,python-3.x,printing,arguments,Python,String,Python 3.x,Printing,Arguments,基本上,我试图将代码的打印输出转换成一个变量。我试图通过将其转换为字符串来实现这一点,但它给了我一个错误:“TypeError:str()最多接受3个参数(给定6个)” 我的代码: x = [1,2,3,4,5] print(*x, sep='_') ##gives me the output "1_2_3_4_5" #problem part: a = str(*x, sep='_') print(a) ##gives error 是否有一种方法可以将输出转换为字

基本上,我试图将代码的打印输出转换成一个变量。我试图通过将其转换为字符串来实现这一点,但它给了我一个错误:“TypeError:str()最多接受3个参数(给定6个)”

我的代码:

x = [1,2,3,4,5]
print(*x, sep='_')  ##gives me the output "1_2_3_4_5"

#problem part:
a = str(*x, sep='_')
print(a)             ##gives error

是否有一种方法可以将输出转换为字符串,而不考虑“6参数”或其他类似于“str()”的东西是否有效?

您可以使用将int列表转换为字符串列表,然后使用将它们绑定在一起:

x = [1, 2, 3, 4, 5]
a = '_'.join(map(str, x))
print(a)  # '1_2_3_4_5'
注意:您的代码不起作用,因为某些代码对您有效:

所有非关键字参数都会像str()一样转换为字符串并写入流


print为您完成了字符串转换步骤。调用时,它只希望一个对象转换为字符串,带有两个可选的关键字参数(
encoding
errors
)。通过调用
str(*x,sep='''code')
,您传入了5个参数加上一个分隔符,这是无效的调用。

*x
str()
提供了太多的参数,导致了错误,
sep
不是
str()
的参数
str()
要求转换一个对象,而
*x
给出5个。试试这个:

x = [1, 2, 3, 4, 5]
a = '_'.join(str(i) for i in x)
print(a) 
这将遍历列表,并将每个元素连接在一起,中间带有下划线


您还可以使用
map(函数、序列)
来缩短
join()
。正在应用的函数是
str()
,用于将数字转换为字符串形式,并转换为
x
列表。这里有
map()


在[1,2,3,4,5]中,join(str(x)代表x)在“.join(str(i)代表x中的i)和“.join(map(str,x))(另一个建议)在什么时候可以/应该使用它?zeurosis没有区别。Map接收一个要执行的函数(
str()
,在本例中),然后将其应用于序列的所有元素,在本例中为
x
。这只是我所做事情的简写——同样的事情也在幕后进行。
x = [1, 2, 3, 4, 5]
a = '_'.join(map(str, x))
print(a)