集合的基本運算:
1.1 建立集合、使用 in 和 not in。
1.2 集合的交集、聯集、差集、反交集運算。
1.3 將字串的字母拆解成集合。
字典的基本運算:
2.1 鍵值對 (key-value pair) 基本操作。
2.2 使用 in 和 not in 判斷 key 是否存在。
2.3 使用 del 刪除鍵值對。
2.4 以列表的資料為基礎,產生字典。
Learn More →
集合就是一群資料放在一起,沒有順序的概念。
字典就是鍵值對(Key-Value Pair)
注意
# 集合的運用
s1={3,4,5}
print(3 in s1)
print(10 in s1)
print(10 not in s1)
s2={4,5,6,7}
s3=s1&s2 # 交集︰取兩個集合中,相同的資料
print(s3)
s3=s1|s2 # 聯集︰取兩個合中的所有資料,但不重複取
print(s3)
s3=s1-s2 # 差集︰從 s1 中,減去和 s2 重疊的部分
print(s3)
s3=s1^s2 # 反交集︰取兩個集合中,非重複的部分
print(s3)
s=set("Hello") # 把字串中的字母折拆成集合︰ set(字串)
print(s)
print("H" in s)
print("A" in s)
# 字典的運用︰key-value 配對
dic={"apple":"蘋果","bug":"蟲蟲"}
print(dic["apple"])
dic["apple"]="小蘋果"
print(dic["apple"])
dic={"apple":"蘋果","bug":"蟲蟲"}
print("apple" in dic) # 判斷 key 是否存在
print("test" in dic)
print("test" not in dic)
print(dic)
del dic["apple"] # 刪除字典中的鍵值對 (key-value pair)
print(dic)
dic={x:x*2 for x in [3,4,5]} # 從列表的資料中產生字典
print(dic)
我自己測試:
word = "Hello"
print("H" in word)
也是true
算是一個補充拉~ XD
---
建議直接將string 看成 一特殊list
意即:
Strings=[ 'H' ,'e' ,'l' ,'l' ,'o' ]
請問一下老師
我打了
dic = {n: n*2 for n in [6, 4, 2]}
print(dic)
print("6" in dic)
為什麼出來是False?
---
因為用那個方式產生出來的 key 其實是數字。
你改成 print(6 in dic) 就會是 True 嘍 ~~~~
若 我想知道 "蟲" 是不是在 dic 的 『值』裡面,要如何操作?
寫個for? 把所有 dic的值 全部遍歷一遍 去判斷??
---
確實是用迴圈哦。如果是 KEY 的話才能很快的判斷 ~~~~
老師您好想請教您 15:22那邊我想用print同時呼叫出apple 與bug的value,我該下麽指令讓他一次跑出兩個 蘋果及蟲蟲。
謝謝老師。
---
print(dic["apple"], dic["bug"])
老師您好,想請教您最後一個部分
dic={x:x*2 for x in [3,4,5]} # 從列表的資料中產生字典
print(dic)
想請教有沒有辦法可以只print x*2的值,
像是前面那種
dic={"apple":"蘋果","bug":"蟲蟲"}
print(dic["apple"])直接輸出為蘋果的那種
---
可以呦,就打 dic[3] 或 dic[4] 或 dic[5] 就可以了,例如:
dic={x:x*2 for x in [3,4,5]}
print(dic[3])
print(dic[4])
print(dic[5])
請問老師能用兩個不同的列表產生字典嗎
像是dic={x:y } 如果可以的話要怎麼設定y列表?
---
試試看這個範例:
keys=["a","b","c"]
values=[1, 2, 3]
dictionary=dict(zip(keys, values))
print(dictionary)
s3=s1&s2 交集
s3=s1|s2聯集
s3=s1-s2差集
s3=s1^s2反交集
s=set("Hello") #set(字串) 拆解字串,成為集合
字典:dic={"key":"value"}
Del doc["key"]刪除鍵值對
Dic={x=x**2 for x in [2,3,4]}從列表產生字典
s1={3,4,8,10,12,15,20}
s2={3,4,5,6,9,10,15}
s3=s1&s2
print(s3)
結果會變成{10, 3, 4, 15}
請問為什麼10會變前面 怎麼試都一樣@@
請問有辦法讓它變成{3, 4,10,15}嗎?
---
集合的概念是不在乎順序的,印出來的順序也不代表未來運算的任何意義,所以不會有任何方法可以控制順序。如果在乎順序,要使用列表來處理嘍 ~
老師好,非常謝謝老師用心的教學,有一個問題想要請教:
集合要用大括號,例如s1={3,4,5}
那為什麼在s=set("Hello")時,是用小括號呢?
是因為後面接的是字串而非數字嗎?還是說使用了set 就可以用小括號?
謝謝老師!
---
使用了 set 後面就是小括號,因為 set 其實是內建的函式幫我們產生集合,那是一個函式呼叫,繼續往後學習會看到關於函式的部份哦 ~~
想請問一個差集的問題
我試著不用s1-s2而是s2-s1
當
s1={3,4,5}
s2={5,6,7,8}
s3=s2-s1
print(s3)
為什麼會是{8,6,7}而不是{6,7,8}呢?
---
集合沒有順序的概念,所以 s2-s1 差集的意思單純只是 5 會被去掉,另外三個數字會被留下來的意思。
怎麼在集合里添加或刪除資料?
---
请参考以下程式:
data={3,4,5}
data.remove(3) # 删除
data.add(6) # 添加
print(data)
這篇教了字典的建立、修改、刪除。請問有新增的語法嗎?
---
可以哦,例如:
dic={"test":"測試"}
dic["apple"]="蘋果" # 新增鍵值對
dic={x:x**2 for x in input("請輸入列表:")}
print(dic)
請問老師為什麼不能這麼寫QAQ
---
因為你使用 input() 得到的輸入是一個字串,不會是列表的形式。
---
clark lai
1 年前
i=input()
j=input()
k=input()
o=[int(i),int(j),int(k)]
dic={x:x*2 for x in o}
print(dic)
老師好,剛看完這個課程,然後嘗試了一下。
照上面那個,好像就可以自己輸入3個數值當一個列表,然後印出來。這樣的想法對嗎?
---
可以这样写
dic={x:x*2 for x in [int(input("请输入列表: "))]}
print(dic)
---
也可以寫成這樣,供你參考。
dic={x:x*2 for x in [int(input("請輸入數字一")),int(input("請輸入數字二")),int(input("請輸入數字三"))]}
print(dic)
老師想請問
dict1={'a':100,'b':200,'c':300}
for i in dict1:
print(i)
跑出來的是
a
b
c
而不是
100
200
300
是因為字典主要以key為主嗎?><
還想請問 影片中說到的字串set 和 一般使用str 字串的 差別是?
---
是地,迴圈會取出字典的 key 沒錯,需要 value 的話就寫 dic1[i] 就可以了。
字串 set 是指把字串中的每個字母變成一個 set。
str() 是一個函式,用來把資料轉換成字串。
沒有太多相關性哦。
如果我要換行,
dic={"apple":"蘋果","bug":"蟲蟲"}
print(dic["apple"]+"\n",dic["bug"])
蘋果
蟲蟲
結果第二行印出來有空格,如何對齊?
---
print(dic["apple"] , "\n"+ dic["bug"])
逗号是有空格的 +是没有空格的
如果你要下一行没空格 应该要这样写
print(dic["apple"]+"\n"+dic["bug"])
老師您好,
因我平常是做硬體的, 沒有資工背景, 是利用空閒時間自學軟體.
想請教老師, python的dictionary類似於C語言的search, list類似於C語言的陣列?
但set好像沒有索引號的概念, 是類似於C語言的指標, 指向記憶體位址取值嗎?
(我想說C語言和python對應起來,應比較能記住兩者的特性.)
如果有誤或建議, 請老師不吝指導,謝謝
---
Set 我不會把他類比成 C 語言的指標,如果是純 C 語言的話,可能沒有能夠類比的東西。C++ 的話也有所謂的 Set 就比較像一點。
比較大的概念一開始或許可以類比,但慢慢的會發現有些細節是類比不起來的。我的經驗來說,最終還是要獨立看待哦 ~
老師好:
想請問把字串建立成集合
再檢查某個字元是否在集合裡的這個方法
是不是可以直接寫成:
print('H' in 'Hello')
那麼字串建立集合是不是有什麼更進階的用途?
---
你寫的也完全沒問題 :)
轉換成集合 (Set),主要還是看看有沒有需要對集合做後續的操作,例如新增刪除等等,使用起來會比較簡單,你可以參考以下網頁看看關於集合的更多操作方式:https://www.w3schools.com/python/python_sets.asp
!!! 從第四課的留言開始 https://www.youtube.com/watch?v=JLU5oc4_VtA&list=PL-g0fdC5RMboYEyt6QS2iLb_1m7QcgfHk&index=4&ab_channel=%E5%BD%AD%E5%BD%AD%E7%9A%84%E8%AA%B2%E7%A8%8B 影片大綱 List 可更動的有序列表。 Tuple 不可更動的有序列表。 列表的索引操作,連續資料操作。 列表的刪除、更改。
Oct 14, 2020影片大綱 if 判斷式 1.1 單一判斷:if ... 1.2 雙向判斷:if ... else 1.3 多條件判斷:if ... elif ... else ... 補充資訊 2.1 不支援 switch 判斷式 ( 3.6 版 ) 2.2 使用 tab 做縮排,表達判斷式中的執行命令。
Oct 12, 2020影片大綱 算術運算:加減乘除、取餘數%、小數除法/、整數除法//、開次方**。 字串的表示法:單行、多行、跳脫字元。 字串的串接與重複。 字串中的字元與子字串:編號與索引操作。 影片 {%youtube bLRa4TZ99aY %}
Oct 10, 2020影片大綱 Python 資料型態(data type):數字、字串、布林值、列表 List、固定列表 Tuple、集合 Set、字典 Dictionary。 Python 變數宣告與使用。 影片 {%youtube FMruNSjHOzQ %} 筆記 各種資料型態
Oct 10, 2020or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up