###### tags: `chapter 6` `Python` # 6-4 進階串列操作 # 前面已經介紹不少串列常用的操作,接下來會介紹更多串列操作讓大家認識。 `index()`:利用特定變數值去尋找該變數在串列裡的`index`。 ```python= cars = ['toyota', 'nissan', 'honda'] search_index = cars.index('nissan') print(search_index) # 1 ``` `count()`:計算特定變數在串列裡出現的次數。 ```python= cars = ['toyota', 'nissan', 'honda', 'honda', 'bmw'] num_of_honda = cars.count('honda') print(num_of_honda) # 2 ``` `join()`:將串列元素合併,需宣告一個字元或者字串,且利用該變數作為合併字串後的分隔字元。 ```python= cars = ['toyota', 'nissan', 'honda', 'honda', 'bmw'] char = '_' print(char.join(cars)) # toyota_nissan_honda_honda_bmw ``` ## 串列的複製 ## 串列的複製會稍微複雜一點,直觀上來說應該只要指派到另外一個變數即可,但真的是這樣嗎? ```python= MySports = ['basketball', 'baseball', 'swim'] FriendSports = MySports ``` 直觀上來說,這樣代表`MySports`和`FriendSports`是一樣的,而且接下來彼此會互不干涉,但如果這時對裡面做一些操作。 ```python= MySports = ['basketball', 'baseball', 'swim'] FriendSports = MySports MySports.append('tennis') print(MySports) print(FriendSports) # ['basketball', 'baseball', 'swim', 'tennis'] # ['basketball', 'baseball', 'swim', 'tennis'] ``` 奇怪的事情來了,我朋友也跟著學了網球? ![](https://i.imgur.com/44c6G7w.png) 這個情況是因為在記憶體實作`MySports = FriendSports`部分其實只是從`FriendSports`簽一條線到`MySports`而已,並沒有真的複製一份出來,他們在底層的部分仍然共用同一份資料,追根究柢他們仍然是同一個螺絲盒! 可以使用`id(MySports)`、`id(FriendSports)`去查看兩個變數在記憶體的位置! ![](https://i.imgur.com/0jfd6hq.png) 如果想要複製一份一樣的變數到"另一個位址",你可以這樣實作。 ```python= MySports = ['basketball', 'baseball', 'swim'] FriendSports = MySports[:] MySports.append('tennis') print(MySports) print(FriendSports) # ['basketball', 'baseball', 'swim', 'tennis'] # ['basketball', 'baseball', 'swim'] ``` 這樣就完成了字串的"真正"複製囉!!