Python 为什么[:]=1与[:]='有根本的不同;1';? 请考虑代码的两个片段(注意字符串和整数之间的区别):

Python 为什么[:]=1与[:]='有根本的不同;1';? 请考虑代码的两个片段(注意字符串和整数之间的区别):,python,Python,及 在第一种情况下,a是['1']。在第二个例子中,我得到了错误TypeError:只能分配一个iterable。为什么在1上使用'1'在这里会有根本性的不同?分配给切片需要在右边有一个iterable。 '1'可编辑,而1不可编辑。考虑以下事项: In [7]: a=[] In [8]: a[:]='abc' 结果是: In [9]: a Out[9]: ['a', 'b', 'c'] 如您所见,列表将字符串的每个字符作为单独的项获取。这是对字符串进行迭代产生其字符这一事实的结果 如果要


在第一种情况下,
a
['1']
。在第二个例子中,我得到了错误
TypeError:只能分配一个iterable
。为什么在
1
上使用
'1'
在这里会有根本性的不同?

分配给切片需要在右边有一个iterable。

'1'
可编辑,而
1
不可编辑。考虑以下事项:

In [7]: a=[]

In [8]: a[:]='abc'
结果是:

In [9]: a
Out[9]: ['a', 'b', 'c']
如您所见,列表将字符串的每个字符作为单独的项获取。这是对字符串进行迭代产生其字符这一事实的结果

如果要用单个标量替换
a
的元素范围,只需将标量包装在某种类型的iterable中:

In [11]: a[:]=(1,) # single-element tuple

In [12]: a
Out[12]: [1]
这也适用于字符串(前提是字符串被视为单个项目,而不是字符序列):


'1'
是一个字符串,但它是可编辑的。它就像一个字符列表
a[:]=“1”
将列表
a
的内容替换为字符串
'1'
的内容。但是
1
是一个整数

Python不会更改类型

例如:

print bool(1=='1') # --> False

这些引语对你有什么意义吗?你能在你的问题中加入“字符串”和“整数”两个词来澄清
'1'
1
之间的区别吗?你也可以省略括号:
a[:]=1,
也可以。虽然我想它没有那么冗长了。@TyrantWave我想你是指括号,而不是括号。对于其他用户,参数不是元组构造函数,逗号是。请参阅@Edwin:“括号”对美国以外的人来说是正确的:。我之所以选择“括号”而不是“帕伦斯”,正是因为我为自己是新西兰人(更具体地说,不是美国人)而感到自豪。@Chris Jester Young Cool,我甚至不知道这一点。我的错。
In [11]: a[:]=(1,) # single-element tuple

In [12]: a
Out[12]: [1]
In [17]: a[:]=('abc',)

In [18]: a
Out[18]: ['abc']
print bool(1=='1') # --> False