學習總結-《父與子的編程之旅》chapter 12


本章學習一種集合的表達,一類是列表,一類是字典。

12.1 什么是列表

family = ['Mom','Dad','Junior']

上面就是一個列表,列表中的單個元素叫項或者元素(item)

12.2 創建列表

family是一個變量,我們可以為變量賦一個列表。

可以創建空列表:list=[]

12.3向列表增加元素

通過append()
eg:

friends = []
friends.append('Kate')

打印列表,則列表中含有Kate,依次可以增加許多元素。但是向列表增加元素之前必須先創建列表(可以空也可以非空)

12.4 這個點是什么

friends和append之間的點是與對象有關的。形式如下:
對象 . 對對象做的操作

12.5 列表可以包含任何內容

列表可以包含Python能存儲的任何類型的數據,而且一個列表可以同時包含不同類型,例如數字、字符串、對象等。

12.6 從列表獲取元素

可以按元素的索引號從列表獲取單個元素。
索引是從0開始而不是1。

12.7 列表“分片”

用索引從列表一次獲取多個元素,叫做列表分片。
分片獲取元素時,從第一個索引開始,在第二個索引之前停止。
例如:
print letters[1:4]
取的是3項,不是4項。

對列表分片時,取回的是更小的列表,更小的列表是原列表的一個分片,原列表沒有改變。而且,如果我們取的分片只含有一個元素,它是單元素分片,不同於直接從列表取一個元素,兩者類型不同。

分片的簡寫:

  • 如果想要的分片包括列表的開始部分,簡寫為:
    eg:
print letters[:2]

冒號后是想要的元素個數

  • 如果想要得到列表末尾 ,類似簡寫為:
print letters[2:]

這樣可以得到從指定索引到列表末尾的所有元素

  • 如果沒有放入任何數,只有冒號,就可得到整個列表:
print letters[:]

12.8 修改元素

可以用索引修改某個列表元素
eg

letters[2] = 'z'

但是不能使用索引向列表增加新的元素。

12.9 向列表增加元素的其他方法

  • append()向列表末尾增加一個元素
    eg:
   >>>letters.append('n')
   >>>print letters
   ['a','b','c','n']
  • extend()向列表末尾增加多個元素
    eg:
>>>letters.extend(['p','q','r'])
>>>print letters
['a','b','c','p','q','r']

insert() 在列表的某個位置增加一個元素
eg

>>>letters.insert(2,'z')
>>>print letters
['a','b','z','c']

其中需要指定在哪個位置增加。

append()與extend()區別
append()向列表增加一個元素,這個元素可以是包含多項元素的列表,而extend()可以包含多個元素。

12.10 從列表刪除元素

  • remove()
    它會刪除選擇的元素並丟掉,不需要知道該元素的具體位置,只要知道它在列表中就可以。
    eg:
>>>letters = ['a','b','c','d']
>>>letters.remove('c')
>>>print letters
['a','b','d']
  • del
    del允許利用索引從列表刪除元素
    eg:
>>>letters= ['a','b','c','d','e']
>>>del letters[3]
>>>print letters
['a','b','c','e']
  • pop()
    pop()從列表取出最后一個元素,可以為其指派一個名字
    eg:
>>>letters= ['a','b','c','d','e']
>>>lastletter = letters.pop()
>>>print letters
 ['a','b','c','d']
>>>print lastletter
e 

也可以給pop提供索引,使得所在位置的元素從列表刪除,並賦給指派的名字。

12.11 搜索列表

  • in
    通過in關鍵字來判斷一個元素是否在列表內,例如,‘a’ in letters 是一個布爾表達式,它會返回true or false

查找索引

  • index()
    eg:
>>>letters = ['a','b','c']
>>>pritn letters.index('c')
2

如果列表中沒有這個值,index()會報錯,所以最好結合in使用

eg:

if 'c' in letters:
    print letters.index('c')

12.12 循環處理列表

循環可以迭代處理任何列表,不一定是數字列表
eg:

>>>letters= ['a','b','c','d','e']
>>>for letter in letters:
>>> print letter

a
b
c
d
e

12.13列表排序

  • sort ()

sort()自動按字母順序對字符串從小到大排序,數字從小到大排序
使用方法:letters.sort()
注意:sort()會在原地修改列表,會改變原始列表,所以不能這樣:

print letters.sort()

需要分步來:

letters.sort()
print letters

逆序排序有兩種方法:
- 先進行sort(),再reverse()
- 向sort()增加參數,直接讓它降序排序
letters.sort(reverse = True)

注意:所有這些排序都會對原來的列表做出修改,所有如果希望保留原順序,需要保留副本:
eg: new_list = original_list[:]

如果直接使用sorted()方法 可以得到一個列表的有序副本而不會影響原列表的順序
eg:

>>> original = [2,3,4,1]
>>> newer =sorted(original)
>>> print original
 [2,3,4,1]
>>> print newer
[1,2,3,4]

12.14可改變和不可改變

在python中,數字和字符串是不可改變的,列表是可改變的
如果不希望列表改變,可以使用元組類型
my_tuple=(‘1’,’2’,’3’)
這里使用圓括號,而不是中括號。元組不能排序,追加或者刪除元素。

12.15 雙重列表:數據表

有的列表包含行和列。一個列表的元素本身又是一個列表,也就是雙重列表。
雙重列表直接創建如下:
classmarks = [[1,2,3],[4,5,6]]
從列表獲取一個值,可以使用兩個索引,eg:print classmarks[1][0]

12.16 字典

字典組織元素的方式,就像單詞和含義聯系起來一樣。關聯在一起的兩個東西 分別為鍵(key)和值(value)。字典中的每一項都有一個鍵和一個值,合起來為鍵值對。

創建空字典

phonenumber = {}

添加條目

phonenumber["John"] = '1555-123'

打印字典

>>>print phonenumber
{"John":1555-123""}

或者用另一種方式完成:

phonenumber = {"John":1555-123""}

如果想在字典中添加更多條目,可以直接指定新的鍵值,不用使用append()

可以在字典中查找東西,比如給定姓名查電話:

>>>print phonenumber["John"]
'1555-123'

字典與列表的相似處:都是將其他類型條目集中在一起的組織方式,可以包含任意類型的條目,數字、字符串、對象甚至其他集合的集合。它們都提供了在集合中查找條目的方法。

不同處:列表是有順序的,按什么順序添加元素,元素就會保持這種順序。還可以排序,字典是無序的,如果向其中添加內容,然后打印,顯示的順序可能跟添加的順序不同;列表中元素使用索引訪問,字典中是用鍵訪問。

利用keys()方法可以列出字典中所有的鍵
values()方法列出字典中所有的值

字典的鍵只可以使用不可變類型(布爾、整數、浮點數、字符串和元組),不能用列表或者字典當做鍵,因為它們是可變類型。

字典是無序的,但有時希望字典中的內容按某種順序顯示出來,可以對鍵的列表排序,然后按鍵的順序顯示字典內容:
eg:

>>>for key in sorted (phonenumber.keys()):
    print key,phonenumber[key]

如果想按值的某種順序輸出,可以參考:

>>>for value in sorted (phonenumber.values()):
    for key in phonenumber.keys():
        if phonenumber[key] == value:
            print key,phonenumber

字典其他可做的
- del 刪除一個條目:del phonenumber[“John”]
- clear() 刪除所有條目 :phonenumber.clear()
- in 確定某個鍵是否在字典中,返回True or False

上面的很多例子都是基於python2的,沒有針對python3修改。

動手試一試(python3):
T1-4:

list=[ ]
print ("ENTER 5 NAME")
for i in range(0,5):    
    name = input( )
    list.append(name)
    print (name)
print ("The names are ",list)
#newlist = list newlist = sorted(list)
newlist = list[:]
newlist.sort()
print(newlist)
print(list)
print(list[2])
change = int(input(print('選擇一個替換')))
new_name = input ('輸入新名字')
list[change] = new_name
print (list)

T5:

dictionary = { 'COMPUTER':'ERW'}
#dictionary['COMPUTER']=['OLD']
T_input=input(print ("Add or look up a word?(A/L)"))
if T_input == 'A' :
    word=input(print("Type the word"))
    definition = input("Type the definition")
    dictionary[word]=[definition]
    print ('Word Added!')
if T_input == 'L':
        lookup = input(print("Type the word"))
        if lookup in dictionary.keys():
            print(dictionary[lookup])
        else:
            print ('That word is not in the dictionary yet.')
else:
    print("error")

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com