python之資料結構

2021-08-17 07:30:29 字數 3396 閱讀 9184

一、列表(list)

1、方法

reverse()   將列表內的元素逆序

sort() 將列表的元素排序,排序的前提是列表的元素是可比較的

count() count(a)返回列表元素a在列表中的出現次數

insert() insert(index,value)

extend() list.extend().list2 將乙個列表的所有元素新增到另乙個列表的末尾

pop() 類似於棧的彈出

例子》 a = ['a','b','c','d']

>>> a.reverse()

>>> a

['d', 'c', 'b', 'a']

>>> a.sort()

>>> a

['a', 'b', 'c', 'd']

>>> a.count('a')

1>>> a.insert(0,'w')

>>> a

['w', 'a', 'b', 'c', 'd']

>>> a

['w', 'a', 'b', 'c', 'd', 'q']

>>> a.pop()

'q'>>> a

['w', 'a', 'b', 'c', 'd']

>>> b = ['m','n']

>>> a.extend(b)

>>> a

['w', 'a', 'b', 'c', 'd', 'm', 'n']

#切片小應用

>>> s = '上海自來水來自海上'

>>>> s[::-1] #s的回文(即將s內的字元逆序)

'上海自來水來自海上'

2、列表推導式

l1 = [i for i in range(1,10)]

print(l1)

#生成乙個偶數的列表

l2 = [i for i in range(1,10) if i%2 == 0]

print(l2)

#生成乙個奇數的平方的數

l3 = [i * i for i in range(1,10) if i%2 == 1]

print(l3)

#匿名函式

>>> l4 = list(map(lambda x:x**2,range(5)))

>>> l4

[0, 1, 4, 9, 16]

#順便介紹一下map函式

#map()函式接收兩個引數,乙個是函式,乙個是iterable,

#map將傳入的函式依次作用到序列的每個元素,並把結果作為新的iterator返回。

--------------------------------------

#!/usr/bin/env python3

defsquare

(x):

return x ** 2

a = list(map(square,range(5)))

print(a)

#[0,1,4,9,16]

--------------------------------------

二、元組(tuple):tuple和list非常類似,但是tuple一旦初始化就不能修改

1、方法

>>> l4

[0, 1, 4, 9, 16]

>>> a,b,c,d,e = tuple(l4)

>>> a

0>>> b

1>>> c

4>>> d

9>>> e

16#python divmod(a,b) 函式把除數和餘數運算結果結合起來,

#返回乙個包含商和餘數的元組(a // b, a % b)。

>>> divmod(3,1)

(3, 0)

>>> divmod(21,2)

(10, 1)

三、集合(set):集合是乙個無序不重複元素的集。基本功能包括關係測試和消除重複元素。

#大括號或 set() 函式可以用來建立集合。

#注意:想要建立空集合,你必須使用 set() 而不是 {}。後者用於建立空字典

>>> a = set('abracadabra')

>>> a

>>> b =

>>> b

>>> a | b #存在於a或b的字母

>>> a & b #a和b中都有的字母

>>> a ^ b #存在於a或b但不同時存在於a,b中的字母

>>> a - b #a有而b中沒有的字母

四、字典

字典是是無序的鍵值對(key:value)集合,同乙個字典內的鍵必須是互不相同的。

一對大括號 {} 建立乙個空字典。

初始化字典時,在大括號內放置一組逗號分隔的鍵:值對,這也是字典輸出的方式。

遍歷乙個字典,使用字典的 items() 方法。

>>> data =

>>> for x,y in data.items():

... print('{} uses {}'.format(x,y))

...kart_ uses debian

kushal uses fedora

jace uses mac

五、程式示例

/*

判斷學生成績是否達標的程式,要求輸入學生數量,以及各個學生物理、數學、歷史

三科的成績,如果總成績小於 120,程式列印 「failed」,否則列印 「passed」。

*/#!/usr/bin/env python

n = int(input("enter the number of students: "))

data = {} # 用來儲存資料的字典變數

subjects = ('physics', 'maths', 'history') # 所有科目

for i in range(0, n):

name = input('enter the name of the student {}: '.format(i + 1)) # 獲得學生名稱

marks =

for x in subjects:

# 獲得每一科的分數

data[name] = marks

for x, y in data.items():

total = sum(y)

print("{}'s total marks {}".format(x, total))

if total < 120:

print(x, "failed !")

else:

print(x, "passed !")

python資料結構之佇列

一 介紹 1 可以把列表當做佇列用,只是在佇列裡第一加入的元素,第乙個取出來。2 拿列表用作這樣的目的效率不高。在列表的最後新增或者彈出元素速度快,然而在列表裡插入或者從頭部彈出速度卻不快 因為所有其他的元素都得乙個乙個地移動 二 應用內建的佇列模組 from collections import ...

Python資料結構之排序

def bubble sort li 氣泡排序 for j in range len li 1 0,1 每次遍歷需要比較的次數,逐漸減小 for i in range 0 j 比較相鄰兩數,大的放右邊 if li i li i 1 li i li i 1 li i 1 li i def select...

Python資料結構之棧

容器 作為容器資料結構,它們保證存入的元素被儲存在容器裡,尚未明確刪除的元素總是可以訪問,而取出並刪除的元素就不再存在於容器中了 棧 棧主要用於在計算過程中儲存臨時的資料,這些資料是計算中發現或者產生的,在後面的計算中可能需要使用它們 棧是最簡單的快取結構,它支援資料項的儲存和訪問,不支援資料項之間...