Python 基礎 - 列表的使用_v2
接下來繼續講之前沒提到的 copy()
,我們依續之前的列表,來做觀察,看看使用 copy()
有什麼不一樣?
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
names = ["Rogers", "Stark", "Thor", "Loki", "Natasha", "Coulson"]
name2 = names.copy()
print(names)
print(name2)
---------------執行結果---------------
['Rogers', 'Stark', 'Thor', 'Loki', 'Natasha', 'Coulson']
['Rogers', 'Stark', 'Thor', 'Loki', 'Natasha', 'Coulson']
Process finished with exit code 0
看起來一樣,那接下來我們來修改一下,把 Thor
修改成中文 索爾
,來觀察一下結果
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
names = ["Rogers", "Stark", "Thor", "Loki", "Natasha", "Coulson"]
name2 = names.copy()
print(names)
print(name2)
names[2] = "索爾"
print(names)
print(name2)
---------------執行結果---------------
['Rogers', 'Stark', 'Thor', 'Loki', 'Natasha', 'Coulson']
['Rogers', 'Stark', 'Thor', 'Loki', 'Natasha', 'Coulson']
['Rogers', 'Stark', '索爾', 'Loki', 'Natasha', 'Coulson']
['Rogers', 'Stark', 'Thor', 'Loki', 'Natasha', 'Coulson']
Process finished with exit code 0
嗯,看起來 names
裡的 Thor
已被修改成中文 索爾
,而 names2
裡的 Thor
則是不變,接下來我們在來做個小變化,在現有的列表中,在插入一個列表
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
names = ["Rogers", "Stark", "Thor", "Loki",["Jarvis", "Potts"], "Natasha", "Coulson"]
name2 = names.copy()
print(names)
print(name2)
names[2] = "索爾"
print(names)
print(name2)
---------------執行結果---------------
['Rogers', 'Stark', 'Thor', 'Loki', ['Jarvis', 'Potts'], 'Natasha', 'Coulson']
['Rogers', 'Stark', 'Thor', 'Loki', ['Jarvis', 'Potts'], 'Natasha', 'Coulson']
['Rogers', 'Stark', '索爾', 'Loki', ['Jarvis', 'Potts'], 'Natasha', 'Coulson']
['Rogers', 'Stark', 'Thor', 'Loki', ['Jarvis', 'Potts'], 'Natasha', 'Coulson']
Process finished with exit code 0
再來如果我想要把剛剛加進去的列表裡的 Jarvis
給變成大寫字母
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
names = ["Rogers", "Stark", "Thor", "Loki",["Jarvis", "Potts"], "Natasha", "Coulson"]
name2 = names.copy()
print(names)
print(name2)
names[2] = "索爾"
names[4][0] = "JARVIS"
print(names)
print(name2)
---------------執行結果---------------
['Rogers', 'Stark', 'Thor', 'Loki', ['Jarvis', 'Potts'], 'Natasha', 'Coulson']
['Rogers', 'Stark', 'Thor', 'Loki', ['Jarvis', 'Potts'], 'Natasha', 'Coulson']
['Rogers', 'Stark', '索爾', 'Loki', ['JARVIS', 'Potts'], 'Natasha', 'Coulson']
['Rogers', 'Stark', 'Thor', 'Loki', ['JARVIS', 'Potts'], 'Natasha', 'Coulson']
Process finished with exit code 0
咦,有發現一個很神奇的問題嗎?為什麼 names裡的JARVIS
跟 names2的JARVIS
是一樣都是大寫
的?但為什麼之前的 names裡的索爾
跟 names2裡的Thor
並沒有被複製過來,這個叫做 淺copy()
,所謂的 淺copy()
就是只複製記憶體裡位置第一層的列表,這原理就有點像是我們之前在一開始所提到的變量,不清楚的可以回頭看一下,或是看下圖我的理解
那如果想要真正全部的複製下來的話,這次我們引入一個 import copy
這個模塊來做完全複製
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
import copy
names = ["Rogers", "Stark", "Thor", "Loki",["Jarvis", "Potts"], "Natasha", "Coulson"]
name2 = copy.copy(names)
print(names)
print(name2)
names[2] = "索爾"
names[4][0] = "JARVIS"
print(names)
print(name2)
---------------執行結果---------------
['Rogers', 'Stark', 'Thor', 'Loki', ['Jarvis', 'Potts'], 'Natasha', 'Coulson']
['Rogers', 'Stark', 'Thor', 'Loki', ['Jarvis', 'Potts'], 'Natasha', 'Coulson']
['Rogers', 'Stark', '索爾', 'Loki', ['JARVIS', 'Potts'], 'Natasha', 'Coulson']
['Rogers', 'Stark', 'Thor', 'Loki', ['JARVIS', 'Potts'], 'Natasha', 'Coulson']
Process finished with exit code 0
吚~結果居然跟上次淺copy()
使用的一樣,其實是不一樣的,這個是完全複製下來了,只是我們要改成 深copy()
,修改一下,再觀察一下
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
import copy
names = ["Rogers", "Stark", "Thor", "Loki",["Jarvis", "Potts"], "Natasha", "Coulson"]
name2 = copy.deepcopy(names)
print(names)
print(name2)
names[2] = "索爾"
names[4][0] = "JARVIS"
print(names)
print(name2)
---------------執行結果---------------
['Rogers', 'Stark', 'Thor', 'Loki', ['Jarvis', 'Potts'], 'Natasha', 'Coulson']
['Rogers', 'Stark', 'Thor', 'Loki', ['Jarvis', 'Potts'], 'Natasha', 'Coulson']
['Rogers', 'Stark', '索爾', 'Loki', ['JARVIS', 'Potts'], 'Natasha', 'Coulson']
['Rogers', 'Stark', 'Thor', 'Loki', ['Jarvis', 'Potts'], 'Natasha', 'Coulson']
Process finished with exit code 0
嗯,看起來已經完全獨立複製一份了,但大多數情況下,不需要獨立在複製一份,這個如果當列表夠大時,做了deepcoy()
會很占記憶體空間的,要小心使用。接下來要在試一下把列表做 for循環
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
import copy
names = ["Rogers", "Stark", "Thor", "Loki",["Jarvis", "Potts"], "Natasha", "Coulson"]
for i in names:
print(i)
---------------執行結果---------------
Rogers
Stark
Thor
Loki
['Jarvis', 'Potts']
Natasha
Coulson
嗯!很簡單,全部都有打印出來了,那如果想跳著打印列表的話,又該怎麼做?
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
import copy
names = ["Rogers", "Stark", "Thor", "Loki",["Jarvis", "Potts"], "Natasha", "Coulson"]
print(names)
print(names[0:-1:2])
---------------執行結果---------------
['Rogers', 'Stark', 'Thor', 'Loki', ['Jarvis', 'Potts'], 'Natasha', 'Coulson']
['Rogers', 'Thor', ['Jarvis', 'Potts']]
Process finished with exit code 0
還記得之前有提到過,在列表裡,0
跟 -1
可以省略,那上面的代碼可不可以在優化一下
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
import copy
names = ["Rogers", "Stark", "Thor", "Loki",["Jarvis", "Potts"], "Natasha", "Coulson"]
print(names)
print(names[::2])
---------------執行結果---------------
['Rogers', 'Stark', 'Thor', 'Loki', ['Jarvis', 'Potts'], 'Natasha', 'Coulson']
['Rogers', 'Thor', ['Jarvis', 'Potts'], 'Coulson']
Process finished with exit code 0
如果不跳著打印的話,也可以寫成
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
import copy
names = ["Rogers", "Stark", "Thor", "Loki",["Jarvis", "Potts"], "Natasha", "Coulson"]
print(names)
print(names[:]) # 這個也可以 print(names[::])
---------------執行結果---------------
['Rogers', 'Stark', 'Thor', 'Loki', ['Jarvis', 'Potts'], 'Natasha', 'Coulson']
['Rogers', 'Stark', 'Thor', 'Loki', ['Jarvis', 'Potts'], 'Natasha', 'Coulson']
Process finished with exit code 0
但這個就較不常使用,看起來比較不直覺。
Python 基礎 - 列表的使用_v2的更多相关文章
- Python 基礎 - 列表的使用
如果想要存所有 Marvel's The Avengers 角色的人名,該如何存呢?請用目前已學到的知識來實做- #!/usr/bin/env python3 # -*- coding:utf-8 - ...
- Python 基礎 - for流程判斷
今天介紹另一個循環判斷式 for循環,首先,先寫一個很簡單的 for循環的代碼 #!/usr/bin/env python3 # -*- coding:utf-8 -*- for i in range ...
- Python 基礎 - if else流程判斷
hmm~前面講了那麼多,終於可以稍稍的正式進入另一個階段,沒錯,要開始寫判斷式了 這次先從最簡單的判斷式開始,if else 開始- Go 首先,之前有寫有一個簡單的互動式 用戶輸入 的代碼,忘記了嗎 ...
- Python 基礎 - 文件操作_v2
嗯,那如何要把游標的位置給打印來? #!/usr/bin/env python3 # -*- coding:utf-8 -*- f = open('test', 'r') print(f.tell() ...
- Python 基礎 - 數據類型
標準數據類型 Python3 中有六個標準的數據類型 1 Number(數字) 2 String(字符串) 3 List (列表) 4 Tuple (元組) 5 Sets (集合) 6 Diction ...
- Python 基礎 - 文件的操作
在來我們來玩一下文件操作,這個在未來工作上,也是會很常用到的功能 Python2.7中,可以用file()來打開文件,而在Python3中,一律都是用open(),接下來在當前目錄下,先建立一個空文件 ...
- Python 基礎 - 字典的操作使用
接下來介紹字典,這在未來工作上,會是很常使用的,就來好好了解一下唄- 字典是一個 key(鍵)-value(值) 的數據類型,可以儲存很多訊息 #!/usr/bin/env python3 # -*- ...
- Python 基礎 - 字符串常用操作
字符串常用操作 今天就介紹一下常用的字符串操作,都是以 Python3撰寫的 首字母變大寫 #!/usr/bin/env python3 # -*- coding:utf-8 -*- name = & ...
- Python 基礎 - 淺copy補充說明
在 import copy 這個模塊裡 基於第一個列表來做淺copy,實際上第二個列表裡的元素,是第一個列表的 引用. 接下來介紹 淺copy有三種方式可以使用 #!/usr/bin/env pyth ...
随机推荐
- .htaccess下Flags速查表
Flags是可选参数,当有多个标志同时出现时,彼此间以逗号分隔. 速查表: RewirteRule 标记 含义 描述 R Redirect 发出一个HTTP重定向 F Forbidden 禁止对URL ...
- CALayer 3 详解 -----转自李明杰
CALayer3-层的属性 本文目录 一.隐式动画属性 二.position和anchorPoint 回到顶部 一.隐式动画属性 * 在前面几讲中已经提到,每一个UIView内部都默认关联着一个C ...
- jquery ajax跨域调用
客户端: //ajax跨域调用的方法 $.ajax({ url:dustUrl+"/screenshot/getDevices.do", type: "get" ...
- bzoj 3530: [Sdoi2014]数数
#include<cstdio> #include<iostream> #include<cstring> #define M 1509 #define MO 10 ...
- apache和nginx
虽然nginx使用较少 还是写写文章,记录下 nginx是异步非阻塞,apache是阻塞的. apache动态页面比nginx好. 由于nginx的高并发性(使用epoll模型),所以出来静态页面性能 ...
- 【 2013 Multi-University Training Contest 5 】
HDU 4647 Another Graph Game 如果没有边的作用,显然轮流拿当前的最大值即可. 加上边的作用,将边权平均分给两个点,如果一个人选走一条边的两个点,就获得了边的权值:如果分别被两 ...
- java中equals和“==”补充
在JDK1.5之后,Integer添加了自动装箱,其形式为Integer i = 5; 装箱过程在内存中是 i = new Integer(4);大家都很熟悉这个吧. 当使用这中形式的时候,equa ...
- CentOS 6.6编译安装Nginx1.6.2+MySQL5.6.21+PHP5.6.3
http://www.osyunwei.com/archives/8867.html 一.配置防火墙,开启80端口.3306端口 vi /etc/sysconfig/iptables #编辑防火墙配置 ...
- MATLAB中FFT的使用方法
MATLAB中FFT的使用方法 说明:以下资源来源于<数字信号处理的MATLAB实现>万永革主编 一.调用方法X=FFT(x):X=FFT(x,N):x=IFFT(X);x=IFFT(X, ...
- Android ListView加载更多
先看效果: ListView的footer布局: <?xml version="1.0" encoding="utf-8"?> <Relati ...