List & Tuple

      在〈List & Tuple〉中尚無留言

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重新指向, 所以不是值的變更

tuple_1

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

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *