當(dāng)我我們在使用List的擴(kuò)展操作時(shí)候,常常會(huì)用到append方法和+運(yùn)算符,不注意他們之間的區(qū)別常常會(huì)導(dǎo)致錯(cuò)誤,下面舉例說明他們的錯(cuò)誤
1)append:
s1 = [1,2,3]
s2 = [4]
s1.append(s2)
s1.append({'1':'2'})
print(s1)
輸出如下
[1,2,3,[4],{'1':'2'}]
- 使用append相當(dāng)把整個(gè)s2當(dāng)做List中的元素的內(nèi)容,相當(dāng)于把[s2]添加到了s1中。如果用print(s1.append(s2))輸出的為None;用test =s1.append(s2)在print(s2)得到還是None,因?yàn)閍ppend操作是在原List上的修改,不會(huì)返回一個(gè)新的值
- append 操作可以向List中添加任何元素,比如字典,不過字典整體作為List中的一個(gè)元素(比如上面字典的{})
2)+運(yùn)算:
s1 = [1,2,3]
s2 = [4]
print(s1+s2)
結(jié)果如下
[1,2,3,4]
+運(yùn)算是對(duì)于兩個(gè)類型相同的變量之間的運(yùn)算,不改變原有的變量,并返回一個(gè)新的值,是內(nèi)容之間的拼接
3)extend:
s1 = [1,2,3]
s2 = [4]
s1.extend(s2)
print(s1)
s3 = 'abc'
s1.extend(s3))
print(s1)
s4 = {'age':12,'height':180}
s1.extend(s4)
print(s1)
輸出如下:
[1, 2, 3, 4]
[1, 2, 3, 4, 'a', 'b', 'c']
[1, 2, 3, 4, 'a', 'b', 'c', 'height', 'age']
extend 也是在原有List上進(jìn)行修改,沒有返回值,可以擴(kuò)展不同類型的變量,并將其內(nèi)容以List變量的形式加入到原List中。
從輸出中可見如果extend的是字符串,則字符串會(huì)被拆分成字符數(shù)組,如果extend的是字典,則字典的key會(huì)被加入到List中