为什么 = 1与 ='1'有根本的不同?
请考虑两个代码片段(注意string和整数之间的区别):
a = [] a[:] = '1' 和
 a = [] a[:] = 1 
 在第一种情况下, a是['1'] 。 在第二个,我得到错误TypeError: can only assign an iterable 。 为什么在这里使用'1'会有根本的不同? 
分配给一个片需要在右边迭代。
  '1'是可迭代的,而1不是。 考虑以下: 
 In [7]: a=[] In [8]: a[:]='abc' 
结果是:
 In [9]: a Out[9]: ['a', 'b', 'c'] 
正如你所看到的,列表将string的每个字符作为一个单独的项目。 这是迭代string产生其字符的事实的结果。
如果你想用一个标量来replace一个元素的范围,只需简单地将标量包装在一个可迭代的类中:
 In [11]: a[:]=(1,) # single-element tuple In [12]: a Out[12]: [1] 
这也适用于string(假设string被视为单个项目而不是字符序列):
 In [17]: a[:]=('abc',) In [18]: a Out[18]: ['abc'] 
  '1'是一个string,但它是可迭代的。 这就像一个字符列表。  a[:]='1'用string'1'的内容replace列表a的内容。 但1是一个整数。 
Python不会改变types。
例:
 print bool(1=='1') # --> False