在 Python 上从列表转换为字符串时出现意外行为
Unexpected behavior when casting from list to string on Python
当我发现这种行为时,我正在摆弄 Python,我无法真正理解它。代码如下:
x = ['A','B','C','D']
x = str(x)
y = "ABCD"
print(f"x = {x} \nx.find('B') is: {x.find('B')}\n\n")
print(f"y = {x} \ny.find('B') is: {y.find('B')}\n\n")
print(x)
print(y)
print(type(x)==type(y))
并且控制台上的输出是:
x = ['A', 'B', 'C', 'D']
x.find('B') is: 7
y = ['A', 'B', 'C', 'D']
y.find('B') is: 1
['A', 'B', 'C', 'D']
ABCD
True
我不完全理解的是:
为什么 x 和 y 在格式化字符串中打印时显示为列表?
为什么只使用print(x)
或print(y)
打印方式不同,即使type(x) == type(y)
?
特别是为什么 x.find('B')
是 7,而 string/list 的长度是 4,而 y.find('B')
按预期工作?
可能是一个微不足道的问题,但我没有在网站上找到类似的问题。谢谢!
您的 print(y)
输出看起来很奇怪的原因是您实际上将 x
传递给 print
。同样,您在 x.find('B')
中看到的情况正在发生,因为您正在将 'x' 转换为 str
。这不会给你一个列表,而是一个看起来像 "['A', 'B', 'C', 'D']"
的字符串。所以这里 B
确实是字符串的第 7 个索引
当我发现这种行为时,我正在摆弄 Python,我无法真正理解它。代码如下:
x = ['A','B','C','D']
x = str(x)
y = "ABCD"
print(f"x = {x} \nx.find('B') is: {x.find('B')}\n\n")
print(f"y = {x} \ny.find('B') is: {y.find('B')}\n\n")
print(x)
print(y)
print(type(x)==type(y))
并且控制台上的输出是:
x = ['A', 'B', 'C', 'D']
x.find('B') is: 7
y = ['A', 'B', 'C', 'D']
y.find('B') is: 1
['A', 'B', 'C', 'D']
ABCD
True
我不完全理解的是: 为什么 x 和 y 在格式化字符串中打印时显示为列表?
为什么只使用print(x)
或print(y)
打印方式不同,即使type(x) == type(y)
?
特别是为什么 x.find('B')
是 7,而 string/list 的长度是 4,而 y.find('B')
按预期工作?
可能是一个微不足道的问题,但我没有在网站上找到类似的问题。谢谢!
您的 print(y)
输出看起来很奇怪的原因是您实际上将 x
传递给 print
。同样,您在 x.find('B')
中看到的情况正在发生,因为您正在将 'x' 转换为 str
。这不会给你一个列表,而是一个看起来像 "['A', 'B', 'C', 'D']"
的字符串。所以这里 B
确实是字符串的第 7 个索引