iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 22
0
自我挑戰組

Kaggle的解題挑戰 2018版系列 第 22

[Day23] Kaggle的解題挑戰 2018版 - Python - Data Structure (1)

不管是那個語言,容器真的是一個Daily Use的技術,不過是考Leetcode或是實際開發上,基本上就是每天在用,做個延伸思考,所謂的程式,就是使用運算和處理資料,來得到我們所要的結果,而容器就是代表一個儲存的資料的資料結構,影嚮著效能和空間使用率。不過,這部分我不確定會寫幾天,不過希望會把常用到的都寫一下這樣,字串的部分就可以不講了,基本上他就是一種array的型態。

Ok, 先來講一下,Python有幾種主要的data structure,list, tuple, set, dictionary。今天先主要講一下list的部分,其它三個就明天再說明了,因為list的操作Python有許多不少方便的操作方式,所以想特別拿出來講一下。

squares = [1, 44, 91, 161, 215]
# print all values
print(squares)
# print the value in position 0
print(squares[0])
# print the values in last one position
print(squares[-1])
# print the values of last three
print(squares[-3:])
# print the clone list
print(squares[:])
# print all values and concat list values
print(squares + [6, 9, 614, 181, 100])

上面的example可以看到Python list操作的強大之處,使用上和Java或是C++的陣列類似,不同的點在於,可以使用負號從反相取值,和使用:來取得一個區塊的值,另外:是clone一個新的list。

再來帶一些常用的範例,如何新增、取代、刪除list中的值。

# add new value
squares.append(777)
print(squares)
# insert a value in specific position
squares.insert(0, 999)
print(squares)
# replace the values
squares[2:5] = [111, 222, 333]
print(squares)
# clean the values
squares[2:6] = []
print(squares)
# clean the list
squares = []
print(squares)

再補充一些list的特性,list中可以放入不同資料型別的資料,不過慣例上都會定義成存相同資料型別。另外,list也是支援二維陣例的寫法,可以使用x[i][j]的方式來取值。

list還有一些進階的用法,比較如何定義stack和queue(需使用deque),和他的API的使用,在參考資料中都可以找到,目前覺得知道這樣的操作法式就已經很足夠了。

參考資料:
[Python Tutorial - 3.1.3. Lists]
(https://docs.python.org/3/tutorial/introduction.html#lists)
Python Tutorial - 5. Data Structures
Python - List


上一篇
[Day22] Kaggle的解題挑戰 2018版 - Python Package
下一篇
[Day24] Kaggle的解題挑戰 2018版 - Python - Data Structure (2)
系列文
Kaggle的解題挑戰 2018版30

尚未有邦友留言

立即登入留言