为什么Python为list(str(z))方法显示两个不同的列表

为什么Python为list(str(z))方法显示两个不同的列表,python,string,list,Python,String,List,我键入以下代码 z=1+2j z=list(str(z)) 我得到的输出是 ['(','1','+','2','j',')'] ['1','+','2','j'] 但是当我写下面的代码时 z=input('') z=list(str(z)) print(z) 我得到的输出是 ['(','1','+','2','j',')'] ['1','+','2','j'] 而不是列表中的曲线括号为什么?使用input()时,您输入了4个字符:1,+,2,j。总之,它们对您来说可能具有与

我键入以下代码

z=1+2j
z=list(str(z))
我得到的输出是

 ['(','1','+','2','j',')']
['1','+','2','j']
但是当我写下面的代码时

 z=input('')
 z=list(str(z))
 print(z)
我得到的输出是

 ['(','1','+','2','j',')']
['1','+','2','j']
而不是列表中的曲线括号为什么?

使用
input()
时,您输入了4个字符:
1
+
2
j
。总之,它们对您来说可能具有与数字
1+2j
相同的语义值,但就Python而言,前一种情况只有四个字符。Python无法知道您是否认为应该将这些字符转换为单个数值

您可以通过一些
打印
语句来观察差异。
您可以使用
complex()
,显式声明这四个字符的字符串应解释为复数:

a=输入(“”)#输入:“1+2j”
打印(a)#i+2j
印刷品(a类)
b=复合体(a)
打印(b)#(1+2j)
印刷品(b类)
您的意思可能是:


z=“1+2j”

当您键入代码时

z=1+2j
z=list(str(z))
z的类型是复杂的。对其调用函数str只需给出类
complex
函数返回的
\uuuu str\uuuu
即可。在您的情况下,
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))

时,此处输入的内容将转换为列表,因为在第一种情况下,
z
是一个复数。你的问题不清楚。你们希望它看起来怎么样?在第二种情况下,我在输入中也输入了1+2j。你们是说它变成了字符串?这就是为什么它没有括号。我只是想在这两种情况下都有一个相同的列表。无论如何,想要一个单一字符的列表是有点奇怪的;如果有人输入了
-0.3-1.2j
你想要像
['-','0',',','3'…]
这样的东西,还是像
['-','0.3','-','1.2','j']
这样的东西?第二个似乎更符合逻辑。可以说python使用大括号只是为了区分字符串和复数吗?是的,这就是这两种数据类型在打印时在视觉上的区别。大括号本身不需要向python发送复数信号,尽管-
1+2j
(1+2j)
是等效的。python只使用大括号作为打印符号。