![](/img/trans.png)
[英]Why does Python treat tuples, lists, sets and dictionaries as fundamentally different things?
[英]Why is a[:]=1 fundamentally different to a[:]='1'?
請考慮兩個代碼片段(注意字符串和整數之間的區別):
a = []
a[:] = '1'
和
a = []
a[:] = 1
在第一種情況下, a
是['1']
。 在第二個,我得到錯誤TypeError: can only assign an iterable
。 為什么在這里使用'1'
超過1
會有根本的不同?
分配給切片需要在右側進行迭代。
'1'
是可迭代的,而1
則不是。 考慮以下:
In [7]: a=[]
In [8]: a[:]='abc'
結果是:
In [9]: a
Out[9]: ['a', 'b', 'c']
如您所見,列表將字符串的每個字符作為單獨的項目。 這是因為迭代字符串會產生其字符。
如果你想更換一個范圍內的a
“s的一個標元素,簡單地包裹在標某種類型的迭代:
In [11]: a[:]=(1,) # single-element tuple
In [12]: a
Out[12]: [1]
這也適用於字符串(假設字符串被視為單個項而不是字符序列):
In [17]: a[:]=('abc',)
In [18]: a
Out[18]: ['abc']
'1'
是一個字符串,但它是可迭代的。 它就像一個字符列表。 a[:]='1'
用字符串'1'
的內容替換列表a
的內容。 但是1
是整數。
Python不會改變類型。
例:
print bool(1=='1') # --> False
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.