如果想要存所有 Marvel's The Avengers 角色的人名,該如何存呢?請用目前已學到的知識來實做…

#!/usr/bin/env python3
# -*- coding:utf-8 -*- names = "Rogers Stark Thor Loki Natasha"

目前已存了五個人,透過空白來區分(也可以用逗號),但該如何去取某一個人的值!?因為咱們已經把這五個人的人名存在一個變量裡了,所以沒辦法取,除非…可以像 Shell Script 透過 sed or awk 去做區分(喂~不能這樣做),想改也沒辦法改,實務上,我們想存很多的訊息,並且透過字符串來存,就面臨了二個問題,一是不好存,二是不好改,所以後來發展出了新的數據類型,就叫 列表,在 Python 裡,使用列表時,就請用 [](中括號)

#!/usr/bin/env python3
# -*- coding:utf-8 -*- names = "Rogers Stark Thor Loki Natasha"
names = [] print(names) ---------------執行結果---------------
[] Process finished with exit code 0

這樣就打印出來一個空的列表,接下來把剛剛的人名給存在這列表裡吧…

#!/usr/bin/env python3
# -*- coding:utf-8 -*- names = "Rogers Stark Thor Loki Natasha"
names = ["Rogers", "Stark", "Thor", "Loki", "Natasha"] print(names) ---------------執行結果--------------- ['Rogers', 'Stark', 'Thor', 'Loki', 'Natasha'] Process finished with exit code 0

這樣就把人名存進去了,接下來我們來取其中一個人名好了,抓 Rogers好了,該怎麼取呢?

#!/usr/bin/env python3
# -*- coding:utf-8 -*- names = "Rogers Stark Thor Loki Natasha"
names = ["Rogers", "Stark", "Thor", "Loki", "Natasha"] print(names["Rogers"]) ---------------執行結果--------------- Traceback (most recent call last):
File "/Users/ironman/python/names.py", line 7, in <module>
print(names["Rogers"])
TypeError: list indices must be integers or slices, not str Process finished with exit code 1

結果發現報錯 TypeError: list indices must be integers or slices, not str,是因為不能這樣取值的,正確取值應該是…

#!/usr/bin/env python3
# -*- coding:utf-8 -*- names = "Rogers Stark Thor Loki Natasha"
names = ["Rogers", "Stark", "Thor", "Loki", "Natasha"] print(names[0]) ---------------執行結果--------------- Rogers Process finished with exit code 0

這樣就取出來了,但為什麼會是0呢? 0就代表 Rogers在這個列表中,從左到右開始的第一個位置,但在電腦存數據時,不是從1開始算的,是從0開始算起的,因為二進制使用的第一個狀態就是0,所以從0開始算的,因此,我們可以透過位置來取得相對應的值。

#!/usr/bin/env python3
# -*- coding:utf-8 -*- names = "Rogers Stark Thor Loki Natasha"
names = ["Rogers", "Stark", "Thor", "Loki", "Natasha"] print(names[0], names[1]) ---------------執行結果--------------- Rogers Stark Process finished with exit code 0

接下來有沒有辦法一次就把 StarkThor 給取出來?

#!/usr/bin/env python3
# -*- coding:utf-8 -*- names = "Rogers Stark Thor Loki Natasha"
names = ["Rogers", "Stark", "Thor", "Loki", "Natasha"] print(names[0], names[1])
print(names[1:2]) ---------------執行結果--------------- Rogers Stark
['Stark'] Process finished with exit code 0

咦~怎麼只出現 Stark ?那在往後取一位試試…

#!/usr/bin/env python3
# -*- coding:utf-8 -*- names = "Rogers Stark Thor Loki Natasha"
names = ["Rogers", "Stark", "Thor", "Loki", "Natasha"] print(names[0], names[1])
print(names[1:3]) ---------------執行結果--------------- Rogers Stark
['Stark', 'Thor'] Process finished with exit code 0

哦…這樣就取出來正確的了,那有沒有發現一個問題,就是只有顧到(包括) 起始位置,而沒有顧到(不包括) 結束位置 ,所以我們叫這個是 顧頭不顧尾 ,如果你要取的位置是連續的就可以用這個方式,而這個方式就叫做 slices(切片)

假設今天我有一個很長的列表,不知道有幾個,但想取最後一個,該怎麼取呢?我們依上面的代碼,先取出最後一個值

#!/usr/bin/env python3
# -*- coding:utf-8 -*- names = "Rogers Stark Thor Loki Natasha"
names = ["Rogers", "Stark", "Thor", "Loki", "Natasha"] print(names[0], names[1])
print(names[1:3])
print(names[4]) # 在已知可數的情況下,就是我們一般取最後一個值的用法 ---------------執行結果--------------- Rogers Stark
['Stark', 'Thor']
Natasha Process finished with exit code 0

在不可數的情況下,也是一般較常用的寫法是

#!/usr/bin/env python3
# -*- coding:utf-8 -*- names = "Rogers Stark Thor Loki Natasha"
names = ["Rogers", "Stark", "Thor", "Loki", "Natasha"] print(names[0], names[1])
print(names[1:3])
print(names[4])
print(names[-1]) ---------------執行結果--------------- Rogers Stark
['Stark', 'Thor']
Natasha
Natasha Process finished with exit code 0

正的就是從左到右取值,負的就是從右到左取值,那如果接下想要取一次取最後二個值,該怎麼取呢?

#!/usr/bin/env python3
# -*- coding:utf-8 -*- names = "Rogers Stark Thor Loki Natasha"
names = ["Rogers", "Stark", "Thor", "Loki", "Natasha"] print(names)
print(names[-1:-3]) ---------------執行結果--------------- ['Rogers', 'Stark', 'Thor', 'Loki', 'Natasha']
[] Process finished with exit code 0

為什麼取出空列表哩,主要是因為 切片還是一樣是 從左往右數來取得數值的,所以我們應該要寫成-3開始取值

#!/usr/bin/env python3
# -*- coding:utf-8 -*- names = "Rogers Stark Thor Loki Natasha"
names = ["Rogers", "Stark", "Thor", "Loki", "Natasha"] print(names)
print(names[-3:-1]) ---------------執行結果--------------- ['Rogers', 'Stark', 'Thor', 'Loki', 'Natasha']
['Thor', 'Loki'] Process finished with exit code 0

又不對了,別忘記了,切片取值是顧頭不顧尾, 所以才會取出 ThorLoki,那在修改一下,參考下圖說明

#!/usr/bin/env python3
# -*- coding:utf-8 -*- names = "Rogers Stark Thor Loki Natasha"
names = ["Rogers", "Stark", "Thor", "Loki", "Natasha"] print(names)
print(names[-2:-1]) ---------------執行結果--------------- ['Rogers', 'Stark', 'Thor', 'Loki', 'Natasha']
['Loki'] Process finished with exit code 0

又不對了,因為 切片是顧頭不顧尾,但又想取最後一個值,又該怎麼辦?

#!/usr/bin/env python3
# -*- coding:utf-8 -*- names = "Rogers Stark Thor Loki Natasha"
names = ["Rogers", "Stark", "Thor", "Loki", "Natasha"] print(names)
print(names[-2:]) ---------------執行結果--------------- ['Rogers', 'Stark', 'Thor', 'Loki', 'Natasha']
['Loki', 'Natasha'] Process finished with exit code 0

這樣就取到,有發現嗎?如果要取最後一個數值,其實 省略不打就可以取到了,那如果要正取0到3,同樣的也是可以省略0,代碼寫法如下

#!/usr/bin/env python3
# -*- coding:utf-8 -*- names = "Rogers Stark Thor Loki Natasha"
names = ["Rogers", "Stark", "Thor", "Loki", "Natasha"] print(names)
print(names[:3]) ---------------執行結果--------------- ['Rogers', 'Stark', 'Thor', 'Loki', 'Natasha']
['Rogers', 'Stark', 'Thor'] Process finished with exit code 0

接下來那我們又想要多加入一個人,該怎麼寫呢?

#!/usr/bin/env python3
# -*- coding:utf-8 -*- names = "Rogers Stark Thor Loki Natasha"
names = ["Rogers", "Stark", "Thor", "Loki", "Natasha"]
names.append("Barton") print(names) ---------------執行結果--------------- ['Rogers', 'Stark', 'Thor', 'Loki', 'Natasha', 'Barton'] Process finished with exit code 0

append() 意思就是附加,而且是加在最後面的,那如果想要隨意放在列表的任一位置呢?

#!/usr/bin/env python3
# -*- coding:utf-8 -*- names = "Rogers Stark Thor Loki Natasha"
names = ["Rogers", "Stark", "Thor", "Loki", "Natasha"]
names.append("Barton")
names.insert(1, "Coulson") print(names) ---------------執行結果--------------- ['Rogers', 'Coulson', 'Stark', 'Thor', 'Loki', 'Natasha', 'Barton'] Process finished with exit code 0

insert() 就是插入任意你想要插入的位置,依上例代碼來說,就是要把 Coulson 插入到 Stark 前面,因此,填入的數字就 1,這樣就會插入在 Stark 前了,那如果要在新增一個人,到 Stark後面,又要怎麼寫呢?

#!/usr/bin/env python3
# -*- coding:utf-8 -*- names = "Rogers Stark Thor Loki Natasha"
names = ["Rogers", "Stark", "Thor", "Loki", "Natasha"]
names.append("Barton")
names.insert(1, "Coulson")
names.insert(3, "Fury") print(names) ---------------執行結果--------------- ['Rogers', 'Coulson', 'Stark', 'Fury', 'Thor', 'Loki', 'Natasha', 'Barton'] Process finished with exit code 0

那要怎麼列表中的人名做取代的呢?

#!/usr/bin/env python3
# -*- coding:utf-8 -*- names = "Rogers Stark Thor Loki Natasha"
names = ["Rogers", "Stark", "Thor", "Loki", "Natasha"]
names.append("Barton")
names.insert(1, "Coulson")
names.insert(3, "Fury")
names[2] = "Bruce" print(names) ---------------執行結果--------------- ['Rogers', 'Coulson', 'Bruce', 'Fury', 'Thor', 'Loki', 'Natasha', 'Barton'] Process finished with exit code 0

有發現了嘛, Stark 被取代成 Bruce了,這就是取代,那再來要怎麼刪除人名嗎?總共三種方法,這次刪除都以位置為 1Coulson 做示範

#!/usr/bin/env python3
# -*- coding:utf-8 -*- names = "Rogers Stark Thor Loki Natasha"
names = ["Rogers", "Stark", "Thor", "Loki", "Natasha"]
names.append("Barton")
names.insert(1, "Coulson")
names.insert(3, "Fury")
names[2] = "Bruce" print(names) # delete methods # 1. names.remove("Coulson") # 2. del names[1] = names.pop(1) # 3. names.pop(1) names.pop(1) print(names) ---------------執行結果--------------- ['Rogers', 'Coulson', 'Bruce', 'Fury', 'Thor', 'Loki', 'Natasha', 'Barton']
['Rogers', 'Bruce', 'Fury', 'Thor', 'Loki', 'Natasha', 'Barton'] Process finished with exit code 0

這三個方法都可以用來刪除,其中要特別說明的就是 pop() 這個刪除是最後一個,請看下圖跟代碼

#!/usr/bin/env python3
# -*- coding:utf-8 -*- names = "Rogers Stark Thor Loki Natasha"
names = ["Rogers", "Stark", "Thor", "Loki", "Natasha"]
names.append("Barton")
names.insert(1, "Coulson")
names.insert(3, "Fury")
names[2] = "Bruce" print(names) names.pop() print(names) ---------------執行結果--------------- ['Rogers', 'Coulson', 'Bruce', 'Fury', 'Thor', 'Loki', 'Natasha', 'Barton']
['Rogers', 'Coulson', 'Bruce', 'Fury', 'Thor', 'Loki', 'Natasha'] Process finished with exit code 0

那如果要在列表中,尋找特定的一個人名是在哪一個位置,那該怎麼找呢?這次我們來找 Loki 好了

#!/usr/bin/env python3
# -*- coding:utf-8 -*- names = "Rogers Stark Thor Loki Natasha"
names = ["Rogers", "Stark", "Thor", "Loki", "Natasha"]
names.append("Barton")
names.insert(1, "Coulson")
names.insert(3, "Fury")
names[2] = "Bruce" print(names)
print(names.index("Loki")) ---------------執行結果--------------- ['Rogers', 'Coulson', 'Bruce', 'Fury', 'Thor', 'Loki', 'Natasha', 'Barton']
5 Process finished with exit code 0

嗯,找到了,但如果我想找出位置後,並打印出相對應的值,該怎麼寫?

#!/usr/bin/env python3
# -*- coding:utf-8 -*- names = "Rogers Stark Thor Loki Natasha"
names = ["Rogers", "Stark", "Thor", "Loki", "Natasha"]
names.append("Barton")
names.insert(1, "Coulson")
names.insert(3, "Fury")
names[2] = "Bruce" print(names)
print(names.index("Loki"))
print( names[names.index("Loki")] ) ---------------執行結果--------------- ['Rogers', 'Coulson', 'Bruce', 'Fury', 'Thor', 'Loki', 'Natasha', 'Barton']
5
Loki Process finished with exit code 0

那如何在列表中,查詢有相同人名的有幾個?

#!/usr/bin/env python3
# -*- coding:utf-8 -*- names = "Rogers Stark Thor Loki Natasha"
names = ["Rogers", "Stark", "Thor", "Loki", "Natasha", "Coulson"]
names.append("Barton")
names.insert(1, "Coulson")
names.insert(3, "Fury")
names[2] = "Bruce" print(names)
print(names.count("Coulson")) ---------------執行結果--------------- ['Rogers', 'Coulson', 'Bruce', 'Fury', 'Thor', 'Loki', 'Natasha', 'Coulson', 'Barton']
2 Process finished with exit code 0

Python 基礎 - 列表的使用的更多相关文章

  1. Python 基礎 - 列表的使用_v2

    接下來繼續講之前沒提到的 copy(),我們依續之前的列表,來做觀察,看看使用 copy() 有什麼不一樣? #!/usr/bin/env python3 # -*- coding:utf-8 -*- ...

  2. Python 基礎 - for流程判斷

    今天介紹另一個循環判斷式 for循環,首先,先寫一個很簡單的 for循環的代碼 #!/usr/bin/env python3 # -*- coding:utf-8 -*- for i in range ...

  3. Python 基礎 - if else流程判斷

    hmm~前面講了那麼多,終於可以稍稍的正式進入另一個階段,沒錯,要開始寫判斷式了 這次先從最簡單的判斷式開始,if else 開始- Go 首先,之前有寫有一個簡單的互動式 用戶輸入 的代碼,忘記了嗎 ...

  4. Python 基礎 - 數據類型

    標準數據類型 Python3 中有六個標準的數據類型 1 Number(數字) 2 String(字符串) 3 List (列表) 4 Tuple (元組) 5 Sets (集合) 6 Diction ...

  5. Python 基礎 - 文件的操作

    在來我們來玩一下文件操作,這個在未來工作上,也是會很常用到的功能 Python2.7中,可以用file()來打開文件,而在Python3中,一律都是用open(),接下來在當前目錄下,先建立一個空文件 ...

  6. Python 基礎 - 字典的操作使用

    接下來介紹字典,這在未來工作上,會是很常使用的,就來好好了解一下唄- 字典是一個 key(鍵)-value(值) 的數據類型,可以儲存很多訊息 #!/usr/bin/env python3 # -*- ...

  7. Python 基礎 - 字符串常用操作

    字符串常用操作 今天就介紹一下常用的字符串操作,都是以 Python3撰寫的 首字母變大寫 #!/usr/bin/env python3 # -*- coding:utf-8 -*- name = & ...

  8. Python 基礎 - 淺copy補充說明

    在 import copy 這個模塊裡 基於第一個列表來做淺copy,實際上第二個列表裡的元素,是第一個列表的 引用. 接下來介紹 淺copy有三種方式可以使用 #!/usr/bin/env pyth ...

  9. Python 基礎 - 字符編碼

    Python 解釋器在加載 .py 文件中的代碼時,會對內容進行編碼 (默認 ascill) ASCII (American Standard Code for Information Interch ...

随机推荐

  1. css实现强制不换行/自动换行/强制换行

    在我们日常的编码中经常会遇到这段文字不可以换行,或者自动换行的需求.虽然这个功能在我们平时很常见但是我相信大家一定不会可以的去记住它吧(至少小月是很懒惰的从来是用什么查什么 ♦ 嘻嘻...).今天我们 ...

  2. vuejs开发组件分享之H5图片上传、压缩及拍照旋转的问题处理

    一.前言 三年.net开发转前端已经四个月了,前端主要用webpack+vue,由于后端转过来的,前端不够系统,希望分享下开发心得与园友一起学习. 图片的上传之前都是用的插件(ajaxupload), ...

  3. 基于KEIL4开发ARM9(S3C2440)的裸机程序

    本文主要介绍如何使用Keil4开发ARM9(S3C2440)裸机程序. 说明: 一.平台: 操作系统:Windows XP系统 KEIL版本:4.73 开发板:ARM9(S3C2440) 二.建立工程 ...

  4. Get Script Path in Shell

    #!/usr/bin/bashdir_old=$(pwd)absolute_script_path=$(cd $(dirname $0) && pwd)relative_script_ ...

  5. php 图片验证码生成 前后台验证

    自己从前一段时间做了个php小项目,关于生成图片验证码生成和后台的验证,把自己用到的东西总结一下,希望大家在用到相关问题的时候可以有一定的参考性. 首先,php验证码生成. 代码如下: 1.生成图像代 ...

  6. Windows中一个22年的漏洞

     X Windows系统,今天作为世界各地的Linux桌面,已经存在超过20年了,仍然存在Bug.几天前Sysadmins为libXfont库提供了补丁,来对应新发现的已经在代码中存在了22年的特权升 ...

  7. TRANSPOSE的DATA步实现

    data a; input name $ a b ; cards; x x x y y y ; run; %macro transpose; proc sql noprint ; select cou ...

  8. Ubuntu下mysql-server的安装

    (1)更新 #apt-get update (2)安装 #apt-get install mysql-server 出现窗口设置"root"用户的密码为"456456&q ...

  9. JPA使用入门

    JPA能干什么?我在前面一遍文章<初步了解JPA>基本描述了.不过你不需要点击回去再看.这里简单的再提一下JPA的功能,就是:(1)实现“对象-关系”映射:(2)对象持久化到数据库:(3) ...

  10. MATLAB中白噪声的产生

    rand产生的是[0,1]上的均匀分布的随机序列randn产生均值为0,方差为1的高斯随机序列,也就是白噪声序列 rand产生的是均匀分布白噪声序列randn产生的是正态分布的白噪声序列 MATLAB ...