python container

list

什麼是 list

一段連續的記憶體,裡面放著一些資料

可以用下標運算子 [] 存取裡面的特定資料

跟 C++ 的 vector 差不多

nums = [4,8,7,6,3]

print(nums[2]) # 7

print(nums[-1]) # 3

nums2 = [5,4,3,2,1]

nums3 = nums2 + nums # nums3 = [5,4,3,2,1,4,8,7,6,3]

# nums3 = nums2
# nums3.extend(nums)

nums4 = nums2 * 3 # nums4 = [5,4,3,2,1,5,4,3,2,1,5,4,3,2,1]

sum = 0
for i in nums:
	sum += i
    
print(sum) # 28

print(len(nums3)) # 10

nums.append(10)
nums.append(16)

nums.reverse()

為什麼需要 list

當你需要存一些有同質性的東西的時候

舉例:100 個人的成績

命名 100 個變數顯然不切實際

這時候就開一個 100 個元素的 list

然後用一個迴圈就可以掃過一遍

你也可以知道每個座號的成績分別是多少

list 很好用的

set

就像是 C++ 的 unordered_set

一個無序資料集

可以想成數學上的集合,我只在乎元素有沒有在集合裡面,不在乎有幾個

s1 = {1,2,3}
s2 = {4,5,6}
s3 = {1,3,5}
s4 = set() # must coded like this, s4 = {} => empty dict
s5 = {3}

print(1 in s1) # True

print(s2 & s3) # {5}
print(s1 & s2) # set()
print(s1 | s2) # {1,2,3,4,5,6}
print(s1 ^ s3) # {2,5}
print(s1 - s3) # {2}

print(s2 > s3) # if s3 is in s2 -> False
print(s3 > s5) # True

s4.add(0)
s1.remove(2) # if 2 not in s1 => error
s2.discard(4) # if 4 not in s2 => nothing happen 

print(len(s2))

tuple

跟 list 很接近

元素唯讀,大小固定

可以當作一個不能改變的東西

語法都相當接近

t1 = (1,2,3)
t2 = (7,3)
t3 = (1,2) * 3

print(t3[3]) # 2
print(t3[1:5]) # (2,1,2,1)
print(t2[:]) # (7,3)
print(t1[0:2]) # (1,2)

sum = 0
for i in t3:
    sum += i

print(sum)
print(t3.count(1))

dict

跟 C++ 的 map 差不多

一個函數,輸入就有對應的輸出

f(key) = value

value 不能是 list 這種可以改變的資料型態

d1 = {'A':1, 'B':2, 'C':3, 'D':4}

print(d1['A'])

d1['A']=5
print(d1['A'])
d1['E']=5

print(len(d1))

print(d1.keys())
print(d1.values())
print(d1.items())

print('C' in d1)

for k in d1:
    print(k)
    
for k, v in d1.items():
    print(k, v)

del d1['B']
d1.clear()

python-container

By alvingogo

python-container

  • 286