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