Python基本數據結構
數據結構:通俗點兒說,就是存儲數據的容器。這里主要介紹Python的4種基本數據結構:列表、元組、字典、集合;
格式如下:
- 列表:list = [val1, val2, val3, val4],用中括號;
- 元組:tuple = (val1, val2, val3, val4),用小括號;
- 字典:dict = {key1: val1, key2: val2, key3: val3},用大括號;
- 集合:set = {val1, val2, val3, val4},用大括號;
1.列表
list = [val1, val2, val3, val4],列表最顯著的特征是:
- 列表中每個元素都是可變的;
- 列表中元素是有序的,即每個元素都有一個位置;
- 列表可以容納Python的任何對象;
接下來看列表的增刪改查:
增:
or_list = [1, "abc", 2.51]
or_list.append("JavaScript") # append()方法在列表末尾追加元素(以整體形式追加)
or_list.insert(0, "Python")
print("or_list is: ", or_list)
用insert()方法可以實現在列表中增加元素。insert()方法需要寫明增加在哪個位置和增加的內容,新元素的實際位置是在指定位置元素之前的位置;如果指定的位置不存在,默認會增加在列表末尾;
or_list = [1, "abc", 2.51]
or_list[0:0] = [9] # [0:0]是指在列表中的第1個位置插入新元素
or_list[3:3] = "a" # [3:3]是指在列表中的第4個位置插入新元素
print("or_list is: ", or_list)
上面的這兩種方法都是天價單個元素,除了添加單個元素,還可以添加多個元素,用extend()方法來實現:
or_list = [1, "abc", 2.51]
ex_list = ["Python", 23, "game"]
or_list.extend(ex_list) # extend()方法用於在列表末尾一次性追加另一個列表的多個值
print("or_list is: ", or_list)
刪:
or_list = [1, "abc", 2.51]
or_list.remove(1)
print("or_list is: ", or_list)
刪除列表元素除了remove()方法外,也可以用del關鍵字來聲明:
del or_list[0:2] # [0:2]刪除第1個和第2個位置元素
print("or_list is: ", or_list)
改:
lst = [1, "abc", 2.51]
lst[0] = "start"
lst[2] = 777
print("lst is: ", lst)
如果想要替換掉列表中的某個元素,可以直接給列表某位置的元素重新賦值,lst[2]指lst列表中的第3個元素;
查:
列表的索引與字符串的索引類似,同樣是分正反兩種索引方式,可以從后往前,也可以從前往后所以,比如:
src_list = [1, "abc", 2.51]
# 輸出第2個位置和倒數第1個位置的元素
print(src_list[1], src_list[-1])
# 輸出第1、2個元素和第2到最后一個元素
print(src_list[:2], src_list[1:])
但是如果想查看某個元素的位置,就需要使用下面這種方式:
src_list = [1, "abc", 2.5, 360]
print(src_list.index(2.5))
這里需要注意的是,如果index()查找的元素不在列表里面,程序會產生ValueError:"xxx" is not in list
2.元組
tuple = (val1,val2,val3,val4),Python中的元組與列表類似,不同之處在於元組不可修改,類似於穩定版的列表,因此在列表中可以使用的增刪改的方法在元組中是不可以使用的,但是可以對元組中的元素進行索引,和列表類似。
tup = (1, 2.5, "hello", 26, "abc")
print(tup[0])
print(tup[1])
print(tup[2])
print(tup.index(26))
print(tup.index("hello"))
同樣的,index()方法查找的元素不在元組中時,會產生ValueError異常。
3.字典
dict = {key1:val1,key2:val2},編程世界中的很多概念都源自於生活,字典也是。這種數據結構如我們使用的字典一樣,通過"名稱->內容"來構建,在Python中每個元素都是帶有冒號的kye與value的對應關系,習慣稱之為鍵值對。字典的特征如下:
- 字典中的元素必須時鍵值對的形式;
- 鍵(key)不可以重復,而值(value)可以重復;
- 鍵不可變,無法修改;值可以修改,可以是任何對象;
即使字典中有重復的鍵,輸出時也只會出現一次,比如:
d = {"A": "art", "B": "blog", "C": "ascii", "C": "cute", "C": "Java"}
print(d) # {'A': 'art', 'C': 'Java', 'B': 'blog'}
接下來看字典的增刪改查:
增:
字典中沒有像列表那樣的insert()方法,但是可以通過下面這種方式插入元素,元素默認插入在最后一個位置。
d = {'A': 'art', 'B': 'Java', 'C': 'blog'}
d["D"] = "dictionary"
print(d)
再列表中可以通過extend()方法來為列表增加多個元素,在字典中可以使用update()方法來實現添加多個元素;
d = {'A': 'art', 'B': 'Java', 'C': 'blog'}
d.update({"D": "dictionary", "E": "example"})
print(d)
刪:
在字典中刪除某個元素,也可以使用del關鍵字:
d = {'A': 'art', 'B': 'Java', 'C': 'blog'}
del d["A"]
print(d)
需要注意的是,雖然字典是用大括號,但刪除時依然使用中括號。
改:
如果要修改字典里的元素,直接重新給鍵賦值即可:
d = {'A': 'art', 'B': 'Java', 'C': 'blog'}
d["B"] = "beyond"
print(d)
查:
在字典中進行查詢時,跟刪除一樣需要通過字典的鍵來,也就是說對字典的查詢和刪除都是通過鍵來的:
d = {'A': 'art', 'B': 'Java', 'C': 'blog'}
d["B"]
print(d["B"])
4.集合
set = {val1,val2,val3,val4},集合的概念有點接近數學上的集合。每個集合中的元素時無序的、不重復的任何Python對象,我們可以通過集合去判斷數據的從屬關系,有時還可以通過集合把數據結構中重復的元素過濾掉。集合不可以被切片也不能被索引,除了做集合運算外,集合元素可以被添加和刪除。
s = {9, 3, 4, 6, 4, 2, 8}
s.add(5) # 新增元素5
s.discard(4) # 刪除元素4
print(s) # 輸出的集合會從小到大排列,並取重:{2, 3, 5, 6, 8, 9}