1. 程式人生 > >Python——列表(2)

Python——列表(2)

文章目錄

1. 列表排序

(1).sort( )

要對列表排序,可以使用 sort( ) 方法。

>>> letters = ['d', 'a', 'e', 'c', 'b']
>>> print letters
['d', 'a', 'e', 'c', 'b']
>>> letters.sort()
>>> print letters
['a', 'b', 'c', 'd', 'e']
>>> 

sort( ) 會自動按字母順序對字串從小到大排序;如果是數字,就會按照數字順序從小到大排序。

因為sort( ) 會在原地修改列表,而不能建立一個新的列表,必須分兩步完成。故sort( )不能這樣用:

print letters.sort()

(2).按逆序排列

有兩種方法:

  • reverse( )
  • reverse引數

reverse( )
一種是先按照正常方式對序列排序,然後再對這個有序列表完成逆置,使用新列表方法reverse( ):

>>> letters = ['d', 'a', 'c', 'e', 'b']
>>> letters.sort()
>>> print letters
['a', 'b', 'c', 'd', 'e']
>>> letters.reverse()
>>> print letters
['e', 'd', 'c', 'b', 'a']
>>> 

reverse 引數
另一種方法是向sort( ) 增加一個引數,直接讓它按照降序排列:

>>> letters = ['d', 'a', 'c', 'e', 'b']
>>> letters.sort(reverse = True)
>>> print letters
['e', 'd', 'c', 'b', 'a']

以上所有操作都是對原列表做出修改,就是說原來的列表已經沒有了,如果希望保留原來的順序,注意先試用分片法建立副本。

(3). sorted( )

還有另一種可以得到一個列表的有序副本而不會改變原列表的順序:

>>> letters = ['d', 'a', 'c', 'e', 'b']
>>> newer = sorted(letters)
>>> print newer
['a', 'b', 'c', 'd', 'e']
>>> print letters
['d', 'a', 'c', 'e', 'b']

2. 雙重列表

如下:

>>> EngMarks = [80, 99, 32]
>>> PEMarks = [95, 56, 100]
>>> mathMarks = [77, 86, 91]
>>> classMarks = [ EngMarks, PEMarks, mathMarks]
>>> print classMarks
[[80, 99, 32], [95, 56, 100], [77, 86, 91]]

這樣就得到一個元素列表,而其中的每一元素又是另一個列表,我們建立了一個“列表中的列表”,也就是雙重列表。

我們也可以直接建立classMarks:

>>> classMarks = [[80, 99, 32], [95, 56, 100], [77, 86, 91]]
>>> print classMarks
[[80, 99, 32], [95, 56, 100], [77, 86, 91]]

使用in做迴圈處理:

>>> for studentMarks in classMarks:
	print studentMarks

	
[80, 99, 32]
[95, 56, 100]
[77, 86, 91]

從表中獲取一個值:
其實這個很好理解,就像C語言中的二維陣列:

>>> print classMarks[0][2]
32

3. 小練習

(1) 寫一個程式,手動輸入5個姓名,程式把5個名字儲存到一個列表中最後打印出來:

nameList = []
print "Enter 5 name: "
for i in range(5):
        name = raw_input()
        nameList.append(name)
print "The names are ",nameList

在這裡插入圖片描述
(2) 修改(1),列印原列表和列表排序後的結果

nameList = []
print "Enter 5 name: "
for i in range(5):
        name = raw_input()
        nameList.append(name)
print "The names are ",nameList
print "The sorted names are ",sorted(nameList)

在這裡插入圖片描述
(3) 修改(1),只打印第三個名字

nameList = []
print "Enter 5 name: "
for i in range(5):
        name = raw_input()
        nameList.append(name)
print "The name are ",nameList[2]      

在這裡插入圖片描述
(4) 修改(1),讓使用者替換其中一個名字。使用者應該可以選擇替換哪一個,然後鍵入名字。最後顯示這個新列表。

nameList = []
print "Enter 5 name: "
for i in range(5):
        name = raw_input()
        nameList.append(name)
        
m = int(raw_input("The index you want to delete: "))
del nameList[m]

newName = raw_input("The name you want yo add: ")
nameList.insert(m,newName)

print "The names are ",nameList

在這裡插入圖片描述