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