一段連續的記憶體,裡面放著一些資料
可以用下標運算子 [] 存取裡面的特定資料
跟 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()
當你需要存一些有同質性的東西的時候
舉例:100 個人的成績
命名 100 個變數顯然不切實際
這時候就開一個 100 個元素的 list
然後用一個迴圈就可以掃過一遍
你也可以知道每個座號的成績分別是多少
就像是 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))
跟 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))
跟 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()