程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python語言入門-列表,元組,字典

編輯:Python

列表(list)

[...] 表示列表(list)。

a = [10, 20, 30, 40]

多行記述的方式,最後一個逗號可省略。

colors = [
'red',
'green',
'blue',
]

 

列表的元素類型可以不同。

a = [10, 'ABC']

 

列表的遍歷用for。

a = [1, 2, 3, 4, 5]
for n in a:
print n

[n] 代表下標。從0開始。

a = ['A', 'B', 'C', 'D', 'E', 'F', 'G']
a1 = a[0] # 第0個: 'A'
a2 = a[2] # 第2個: 'C'

[n:m] 代表第 n個開始到 第m之前的一個(也就是 第m - 1個)元素。n 省略的話代表從0開始、m省略的話代表到結尾。

a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
a1 = a[2:4] # 第2個開始到第3個: [2, 3]
a2 = a[2:] # 第2個開始到最後: [2, 3, 4, 5, 6, 7, 8, 9]
a3 = a[:4] # 第0哥開始到第3個: [0, 1, 2, 3]

[n:m:s] 的s代表跳躍幾個。

a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
a1 = a[1:8:2] # 第1個到第7個,每次跳躍2個: [1, 3, 5, 7]

n, m 為負數的時候,指的是從結尾數起。

a = ['A', 'B', 'C', 'D', 'E', 'F', 'G']
a1 = a[-1] # 最後的字符 'G'
a2 = a[-3:-1] # 從最後開始數第3個到最後開始的第1個的字符: ['E', 'F']

+ 運算符代表列表的結合。

print [1, 2, 3] + [4, 5, 6] #=> [1, 2, 3, 4, 5, 6]

len() 獲取列表的元素個數。

print len([1, 2, 3]) #=> 3

 

列表的列表(列表嵌套)。

a = [[1, 2], [3, 4], [5, 6]]
for list in a:
for n in list:
print n, #=> 1 2 3 4 5 6

 

元組(tuple)

(...) 用來表示元組(tuple)。元組的用法幾乎與列表相同,內容不能修改和編輯。

a = (10, 20, 30, 40)

 

要素只有一個的情況,末尾要加上逗號(,),用來區分括號運算符。

a = (10) # 不是元組,而是10本身
a = (10,) # 具有一個元素的元組

 

元組的內容一旦建立就不可以修改。

a1 = [10, 20, 30, 40]
a2 = (10, 20, 30, 40)
a1[2] = 60 # 可以賦值
a2[2] = 60 # 會報錯

 

通過 list() 可以轉換元組為新的列表,通過 tuple() 把列表轉為新的元組。

print list((1, 2, 3)) #=> [1, 2, 3]
print tuple([1, 2, 3]) #=> (1, 2, 3)

 

字典(dict)

{ ...} 符號來標記,字典(dict)是鍵值對的集合。

d = {'Yamada': 30, 'Suzuki': 40, 'Tanaka': 80}

 

要素的訪問方法

d1 = d['Yamada']
d2 = d['Suzuki']
d3 = d['Tanaka']

 

獲取所有元素的集合和鍵,值的集合。使用items()keys()valus()iteritems()

d = {'Yamada': 30, 'Suzuki': 40, 'Tanaka': 80}
for k, v in d.items():
print k, v # Tanaka 80, Yamada 30, Suzuki 40
for k in d.keys():
print k, d[k] # Suzuki 40, Yamada 30, Tanaka 80
for v in d.values():
print v # 80, 30, 40
for k, v in d.iteritems():
print k, v # Tanaka 80, Yamada 30, Suzuki 40

 

列表函數(map(), filter(), reduce())

map() 功能是列表的各個元素逐個處理,把處理結果返回。

下面是把所有元素*2的處理。

a = [1, 2, 3]
def double(x): return x * 2
print map(double, a) #=> [2, 4, 6] : 函數方式
print map(lambda x: x * 2, a) #=> [2, 4, 6] : lambda方式
print [x * 2 for x in a] #=> [2, 4, 6] : 內包方式【後述】

filter() 對列表內容逐個處理,處理結果為真的話就保留。下面的處理是返回奇數。

a = [1, 2, 3]
def isodd(x): return x % 2
print filter(isodd, a) #=> [1, 3] : 函數方式
print filter(lambda x: x % 2, a) #=> [1, 3] : lambda方式
print [x for x in a if x % 2] #=> [1, 3] : 內包方式【後述】

reduce() 是先處理前兩個元素,再把結果和下一個元素做處理,以此類推。返回單一的結果。下面的處理是計算合計。

a = [1, 2, 3, 4, 5]
def add(x, y): return x + y
print reduce(add, a) #=> 15 : 函數方式
print reduce(lambda x, y: x + y, a) #=> 15 : lambda方式

 

列表內包記法

列表內包記法 是指不用map(), filter(), lambda就能進行一些簡單的列表處理。

a = [1, 2, 3]
print [x * 2 for x in a] #=> [2, 4, 6]
print [x * 2 for x in a if x == 3] #=> [6]
print [[x, x * 2] for x in a] #=> [[1, 2], [2, 4], [3, 6]]
print [(x, x * 2) for x in a] #=> [(1, 2), (2, 4), (3, 6)]
b = [4, 5, 6]
print [x * y for x in a for y in b] #=> [4, 5, 6, 8, 10, 12, 12, 15, 18]
print [a[i] * b[i] for i in range(len(a))] #=> [4, 10, 18]

 

集合(set)

集合(set)可以理解為沒有重復元素的列表。集合之間可以進行減、OR、AND、XOR等操作。

a = set(['red', 'blue', 'green'])
b = set(['green', 'yellow', 'white'])
print a #=> set(['red', 'blue', 'green'])
print b #=> set(['green', 'yellow', 'white'])
print a - b #=> set(['red', 'blue'])
print a | b #=> set(['red', 'blue', 'green', 'yellow', 'white'])
print a & b #=> set(['green'])
print a ^ b #=> set(['red', 'blue', 'yellow', 'white'])
print 'green' in a #=> True
a.add('black')
print a #=> set(['red', 'blue', 'green', 'black'])

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved