Python 學習筆記-2 集合與字典

這系列的學習筆記是跟著彭彭老師的 youtube 教學影片操作的,個人覺得老師講的很清楚明暸,如果有學習 python 的需求可以參考老師的教學。

上週簡單介紹部分的資料型別,本週要來介紹集合與字典

集合(set):是一群資料組合, 無順序性,可以用 in, not in 判斷資料是否存在

1
2
3
4
5
6
7
8
9
10
11
12
13
14

data = {1,2,3}

print(3 in data)

# 輸出 true

print(8 in data)

# 輸出 false

print(8 not in data)

# 輸出 true

交集:在兩個集合中取出相同的資料

1
2
3
4
5
6
7
8
9
data1 = {1,2,3}

data2 = {3,4,5}

data3 = data1&data2

print(data3)

# 輸出 set(\[3\])

聯集:取出兩個集合的所有資料,但不重複

1
2
3
4
5
6
7
8
9
data1 = {1,2,3}

data2 = {3,4,5}

data3 = data1|data2

print(data3)

# 輸出 set(\[1, 2, 3, 4, 5\])

差集:從 data1 減去與 data2 重疊的部分

1
2
3
4
5
6
7
8
9
10
11
12

data1 = {1,2,3}

data2 = {3,4,5}

data3 = data1-data2

print(data3)

#輸出

set([1, 2])

反交集:取兩個集合中,不重疊的地方

1
2
3
4
5
6
7
8
9
data1 = {1,2,3}

data2 = {3,4,5}

data3 = data1^data2

print(data3)

#輸出 set([1, 2, 4, 5])

可以將字串拆解為集合 set 但不會按照順序,重複的不會重複放

1
2
3
4
5
6
data = set("nobody")

print(data)

#輸出
set(['y', 'b', 'd', 'o', 'n'])

字典(dictionary)

個人覺得比較像 javaScript 物件,鍵值對,一個 key 對一個 value

1
2
3
4
5
6
7
8
9
10
11
12
dic={'jack':'30','alice':'28'}

print(dic['jack'])

#輸出 30

dic['jack'] = '99'

print(dic['jack'])

#輸出 99

in, not in 可以檢查是否有這個 key

1
2
3
4
5
6
7
8
9
10

dic={'jack':'30','alice':'28')

print('jack' in dic)

#輸出 true

print('mike' in dic)

#輸出 false

del 刪除鍵值對 (key,value)

1
2
3
4
5
6
7
8
dic={'jack':'30','alice':'28'}

del dic['jack']

print(dic)

#輸出
{'alice': '28'}

將列表轉換為字典

1
2
3
4
5
6
7

dic={i:i*2 for i in [1,2,3]}

print(dic)
#輸出

{1: 2, 2: 4, 3: 6}

流程判斷式 if 要用縮排,記得條件式後面要記得加冒號(沒加會報錯

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
x = input('please enter number')#用戶輸入數字 會是字串型式

x = int(x) #先將字串轉為數字

if x>200:

print('bigger than 200')

elif x>100:

print('bigger than 200, less than 100')

else:

print('less than 100')

#輸入 123 輸出 bigger than 200, less than 100

四則運算(加減乘除)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
n1=int(input("please enter number1: "))

n2=int(input("please enter number2: "))

cal=input("Calculation: ")

if cal=="+":

print(n1+n2)

elif cal=="-":

print(n1-n2)

elif cal=="\*":

print(n1\*n2)

elif cal=="/":

print(n1/n2)

else:

print('oops')

#輸入
please enter number1: 2
please enter number2: 3
Calculation: %

#輸出
oops

while 若不滿足條件,就繼續執行,直到滿足條件為止,要小心無窮迴圈

1
2
3
4
5
6
7
8
9
n=1

while n<=5:

print(n)

n+=1

#輸出 1,2,3,4,5

for 迴圈 for in 將列表或字串中的項目或是單字逐一處理

1
2
3
4
5
6

for x in [1,2,3]:

print(x)

#輸出 1,2,3

使用 range 可以自動幫你生成列表(從 0 開始)

1
2
3
4
5
6
7
for x in range(3):

print(x)

等於

for x in [0,1,2]:

如果傳入兩個值,則第一個參數是起始值,第二個參數是結束值,就會從起始值生成,到結束值的前一個停止

1
2
3
for x in range(3, 6): #包含開頭,不包含結束
print(x)
#輸出 3,4,5

for in 也可以用在字串上,會逐一印出每個單字

1
2
3
4
5
6
7
8
9
10
for x in 'super':

print(x)

#輸出
s
u
p
e
r

不得不說相較於 javascript,python 的語法真的簡潔蠻多的,而且提供了滿多便民的方法(?