List
list 是一個有序的集合, 可以動態新增刪除裏面的元素
使用方式
使用變數並在 [] 中指定值即可. 將變數直接印出, 則會列印所有的值
student=["Thomas", "John", "keven"] print(student)
取得取代
如陣列一樣傳入索引編號, 即可讀取或變更裏面的值.
索引編號若超出範圍, 則會產生IndexError 錯誤.
另索引編號可以為 -1 : 取最後一個值, -2則是取最後第二個值
student[0]="Tony" print(student[0])
新增
使用 append()則會新增資料到最後一筆中
student.append("tracy")
插入
使用insert, 並指定要插入的索引, 則可以將值插入中間位置
student.insert(1, "merry")
刪除
使用pop(), 並不傳入參數, 則會將最後一個刪除. 若有傳入參數, 則會刪除參數指定位置的值
student.pop(1)
不同型態的值
Python是弱型語言嘛, 所以集合內的值, 不一定要同型態, 如下有的是字串, 有的是數字. 真是個奇葩的程式語言啊.
student=["Thomas", "John", "keven", 123]
集合中的集合
集合中, 可以是其他的集合
不過請注意, 要列印Thomas, 則必需使用 school[2][0]的方式取得
student=["Thomas", "John", "keven"] school=["校長", "Merry", student] print(school) print(school[2][0]) 結果 : ['校長', 'Merry', ['Thomas', 'John', 'keven']] Thomas
空集合
bus=[] , 此時的len(bus)則為 0
Tuple [ˈtjuːpəl]
另一種有序的集合, 叫元組(tuple). tuple和list 類似, 但tuple一旦初始化後就不能修改. 所以tuple沒有append, 也沒有insert.
有時為了安全性, 如果值不需再作改變時, 盡量使用tuple
classmates = ('Michael', 'Bob', 'Tracy')
#classmates[0]="abc" <==TypeError: 'tuple' object does not support item assignment
print(classmates)
tuple陷井1
以下的代碼, 並不是更改tuple, 而是tuple重新指向, 所以不是值的變更

t = ('Michael', 'Bob', 'Tracy')
print(t)
t=("Thomas",)
print(t)
陷井2
t=(1,2) <==二個元素
t=() <==空的元素
t=(1) <==t 為1 這個數
t(1,) <== t只有一個元素, 所以只有一個元素的話, 一定要加 “,”
可變 tuple
下述的 t[2][0], 其實並不是可變的tuple, 而是在 tuple[2]含了一個可變的list, 所以變更的是list, 而不是tuple
t = ('Michael', 'Bob', ["Thomas", "John"])
t[2][0]="Kevin"
print(t)
天干地支
此代碼於 2020 年撰寫,2024 年更新。若要查自已的日主,可到 https://myfate.herokuapp.com/ 查詢
from datetime import datetime
sky=['甲','乙','丙','丁','戊','己','庚','辛','壬','癸']
land=['子','丑','寅','卯','辰','巳','午','未','申','酉','戌','亥']
animal=['鼠','牛','虎','免','龍','蛇','馬','羊','猴','雞','狗','豬']
current=datetime.now().year-1911
year=13
print(f"目前為民國 {current}年")
for i in range(150):
if(year<=current):
print(
f'民國{year:3d}年 {sky[i%10]:s}{land[i%12]:s}: {animal[i%12]:s} {current-year+1:3d}歲'
)
else:
print(
f'民國{year:3d}年 {sky[i % 10]:s}{land[i % 12]:s}: {animal[i % 12]:s}'
)
year+=1
結果
目前為民國 113年
民國 13年 甲子: 鼠 101歲
民國 14年 乙丑: 牛 100歲
民國 15年 丙寅: 虎 99歲
民國 16年 丁卯: 免 98歲
民國 17年 戊辰: 龍 97歲
民國 18年 己巳: 蛇 96歲
民國 19年 庚午: 馬 95歲
民國 20年 辛未: 羊 94歲
民國 21年 壬申: 猴 93歲
民國 22年 癸酉: 雞 92歲
民國 23年 甲戌: 狗 91歲
民國 24年 乙亥: 豬 90歲
民國 25年 丙子: 鼠 89歲
民國 26年 丁丑: 牛 88歲
民國 27年 戊寅: 虎 87歲
民國 28年 己卯: 免 86歲
民國 29年 庚辰: 龍 85歲
民國 30年 辛巳: 蛇 84歲
民國 31年 壬午: 馬 83歲
民國 32年 癸未: 羊 82歲
民國 33年 甲申: 猴 81歲
民國 34年 乙酉: 雞 80歲
民國 35年 丙戌: 狗 79歲
民國 36年 丁亥: 豬 78歲
民國 37年 戊子: 鼠 77歲
民國 38年 己丑: 牛 76歲
民國 39年 庚寅: 虎 75歲
民國 40年 辛卯: 免 74歲
民國 41年 壬辰: 龍 73歲
民國 42年 癸巳: 蛇 72歲
民國 43年 甲午: 馬 71歲
民國 44年 乙未: 羊 70歲
民國 45年 丙申: 猴 69歲
民國 46年 丁酉: 雞 68歲
民國 47年 戊戌: 狗 67歲
民國 48年 己亥: 豬 66歲
民國 49年 庚子: 鼠 65歲
民國 50年 辛丑: 牛 64歲
民國 51年 壬寅: 虎 63歲
民國 52年 癸卯: 免 62歲
民國 53年 甲辰: 龍 61歲
民國 54年 乙巳: 蛇 60歲
民國 55年 丙午: 馬 59歲
民國 56年 丁未: 羊 58歲
民國 57年 戊申: 猴 57歲
民國 58年 己酉: 雞 56歲
民國 59年 庚戌: 狗 55歲
民國 60年 辛亥: 豬 54歲
民國 61年 壬子: 鼠 53歲
民國 62年 癸丑: 牛 52歲
民國 63年 甲寅: 虎 51歲
民國 64年 乙卯: 免 50歲
民國 65年 丙辰: 龍 49歲
民國 66年 丁巳: 蛇 48歲
民國 67年 戊午: 馬 47歲
民國 68年 己未: 羊 46歲
民國 69年 庚申: 猴 45歲
民國 70年 辛酉: 雞 44歲
民國 71年 壬戌: 狗 43歲
民國 72年 癸亥: 豬 42歲
民國 73年 甲子: 鼠 41歲
民國 74年 乙丑: 牛 40歲
民國 75年 丙寅: 虎 39歲
民國 76年 丁卯: 免 38歲
民國 77年 戊辰: 龍 37歲
民國 78年 己巳: 蛇 36歲
民國 79年 庚午: 馬 35歲
民國 80年 辛未: 羊 34歲
民國 81年 壬申: 猴 33歲
民國 82年 癸酉: 雞 32歲
民國 83年 甲戌: 狗 31歲
民國 84年 乙亥: 豬 30歲
民國 85年 丙子: 鼠 29歲
民國 86年 丁丑: 牛 28歲
民國 87年 戊寅: 虎 27歲
民國 88年 己卯: 免 26歲
民國 89年 庚辰: 龍 25歲
民國 90年 辛巳: 蛇 24歲
民國 91年 壬午: 馬 23歲
民國 92年 癸未: 羊 22歲
民國 93年 甲申: 猴 21歲
民國 94年 乙酉: 雞 20歲
民國 95年 丙戌: 狗 19歲
民國 96年 丁亥: 豬 18歲
民國 97年 戊子: 鼠 17歲
民國 98年 己丑: 牛 16歲
民國 99年 庚寅: 虎 15歲
民國100年 辛卯: 免 14歲
民國101年 壬辰: 龍 13歲
民國102年 癸巳: 蛇 12歲
民國103年 甲午: 馬 11歲
民國104年 乙未: 羊 10歲
民國105年 丙申: 猴 9歲
民國106年 丁酉: 雞 8歲
民國107年 戊戌: 狗 7歲
民國108年 己亥: 豬 6歲
民國109年 庚子: 鼠 5歲
民國110年 辛丑: 牛 4歲
民國111年 壬寅: 虎 3歲
民國112年 癸卯: 免 2歲
民國113年 甲辰: 龍 1歲
民國114年 乙巳: 蛇
民國115年 丙午: 馬
民國116年 丁未: 羊
民國117年 戊申: 猴
民國118年 己酉: 雞
民國119年 庚戌: 狗
民國120年 辛亥: 豬
民國121年 壬子: 鼠
民國122年 癸丑: 牛
民國123年 甲寅: 虎
民國124年 乙卯: 免
民國125年 丙辰: 龍
民國126年 丁巳: 蛇
民國127年 戊午: 馬
民國128年 己未: 羊
民國129年 庚申: 猴
民國130年 辛酉: 雞
民國131年 壬戌: 狗
民國132年 癸亥: 豬
民國133年 甲子: 鼠
民國134年 乙丑: 牛
民國135年 丙寅: 虎
民國136年 丁卯: 免
民國137年 戊辰: 龍
民國138年 己巳: 蛇
民國139年 庚午: 馬
民國140年 辛未: 羊
民國141年 壬申: 猴
民國142年 癸酉: 雞
民國143年 甲戌: 狗
民國144年 乙亥: 豬
民國145年 丙子: 鼠
民國146年 丁丑: 牛
民國147年 戊寅: 虎
民國148年 己卯: 免
民國149年 庚辰: 龍
民國150年 辛巳: 蛇
民國151年 壬午: 馬
民國152年 癸未: 羊
民國153年 甲申: 猴
民國154年 乙酉: 雞
民國155年 丙戌: 狗
民國156年 丁亥: 豬
民國157年 戊子: 鼠
民國158年 己丑: 牛
民國159年 庚寅: 虎
民國160年 辛卯: 免
民國161年 壬辰: 龍
民國162年 癸巳: 蛇
大樂透
import random
datas=[]
for i in range(7):
while True:
n=random.randint(1,49)
flag=True
for d in datas:
if n==d:
flag=False
break;
if flag:
datas.append(n)
break
print(datas)
切片
list 可以進行切片,取得其中某一部份的資料。比如下面的 a[0:3],是取得編號為 0~3的資料,但不包含 3
import numpy as np a=['a','b','c','d','e','f'] #從索引編號 0~3 的切片,但不包含 3 print(a[0:3]) #==>['a','b','c']
為了練習,可以把字串當成 list 進行切片練習
a="abcdefghijklmnopqrstuvwxyz"
#從編號 2 到 5
print("a[2:5] :",a[2:5])
#從頭到編號 5
print("a[:5] :",a[:5])
#從頭到最後,但不包含最後
print("a[:-1] :",a[:-1])
#從尾到頭,反向列印
print("a[::-1] :",a[::-1])
#從頭到尾,每隔 2 個取一次
print("a[::2] :",a[::2])
#從編號 10 到 0 反向選取,但不包含 0
print("a[10:0:-1] :",a[10:0:-1])
結果:
a[2:5] : cde
a[:5] : abcde
a[:-1] : abcdefghijklmnopqrstuvwxy
a[::-1] : zyxwvutsrqponmlkjihgfedcba
a[::2] : acegikmoqsuwy
a[10:0:-1] : kjihgfedcb
