簡體   English   中英

list + = str和list + = str有什么區別,

[英]What is the difference between list += str and list += str,

今天我在做一些python列表操作時發現了一個奇怪的行為。

可以說,

a = []
b = 'xy'

當我這樣做時,解釋器返回+ = b:

a += b
a == ['x', 'y']

但當我這樣做時,+ = b,(用逗號)解釋器返回= ['xy']

a += b,
a == ['xy']

有人可以解釋一下這里發生了什么。

a += b

a是列表時,此操作類似於a.extend(b) 所以它迭代對象b ,將每個元素追加到a

如果你迭代字符串'xy' ,它會產生兩個元素'x''y'

如果你迭代元組'xy', ,它會產生一個元素'xy'

這條線

a += b,

相當於

a += (b, )

它創建一個帶有一個項目的元組。 如果添加,則將項目'xy'添加到a

如果你添加一個像'xy'這樣的字符串,它就會被視為一個字符序列,並且每個序列項(字符)都被單獨添加到a字符串中。

所以基本上逗號將b包裝成一個元組。

逗號創建tuple - 所以a += b,表示與a += (b,)

a += ('xy', )

你添加一個元素的元組,所以它幾乎像

a += ['xy']

所以你有了

a = [] + ['xy']

給出了結果

a = ['xy']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM