为什么Python显示列表(Str(Z))方法的两个不同列表



i键入以下代码

z=1+2j
z=list(str(z))

我获得输出为

 ['(','1','+','2','j',')']

但是当我编写以下代码

 z=input('')
 z=list(str(z))
 print(z)

我获得输出为

['1','+','2','j']

而不是列表中的曲线括号,为什么?

使用input()时,您输入了4个字符:1+2j。在一起,它们可能与您的语义价值相同,与数字1+2j相同,但是就Python而言,前面的情况只有四个字符。Python没有任何方法知道您认为应该将这些字符转换为单个数值值。

您可以使用一些print语句观察差异。
您可以明确地声明,该四个字符的字符串应解释为一个复杂的数字,使用complex()

a = input('') # input: "1+2j"
print(a) # i+2j
print(type(a)) # <class 'str'>

b = complex(a)
print(b) # (1+2j)
print(type(b)) # <class 'complex'>

您可能是指:

z =" 1 2J"

键入代码

z=1+2j
z=list(str(z))

z的类型是复杂。在其上调用函数str只会为您提供complex类返回的__str__功能。在您的情况下,str(z)将返回

'(1 2J)'

进行z=list(str(z))时,它会为您提供str(z)中所有字符的列表。现在z指向列表,而不是复杂的对象。

当您运行此

 z=input('')
 z=list(str(z))
 print(z)

input('')为您提供了str类型值。打电话给z=list(str(z))时,无论您输入什么输入。

最新更新