首頁>技術>

在前一節介紹了Python中的容器的序列,本節將介紹幾種適合Python序列(字串、列表、元組)的通用操作。即我們在Python基礎程式設計——字串的使用一節中介紹的索引、切片、序列相加、乘法、成員資格等。本節的所有的內容,將以列表的操作來說明。

PS:本節主要在於複習之前的內容,可兩節一起閱讀,更有助於理解Python序列的通用操作。

索引

列表中所有的元素都是有編號的,稱之為索引。從左到右、從零開始。可以使用索引值來訪問列表中的元素,如下所示:

之前介紹的input函式獲取使用者輸入的資訊,其返回值是一個字串序列,我們也可透過索引獲取使用者輸入的部分資訊。如下所示:

上述程式碼中獲取了輸入年份的第四位元素值,即索引值為3的索引對應的字元。

下面介紹一個輸入年、月、日,然後按照指定格式輸出的小程式date_format.py,具體如下所示:

date_format.py# 儲存月的months列表months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November',          'December'          ]# 儲存日的endings列表endings = ['st', 'nd', 'rd'] + 17 * ['th'] + ['st', 'nd', 'rd'] + 7 * ['th'] + ['st']# 獲取使用者輸入year = input('Year:')month = input('Month(1—12):')day = input('Day(1-31):')# 將input函式獲取到的字串轉換成數字year_number = int(year)month_number = int(month)day_number = int(day)# 獲取正確的月和日的month_name = months[month_number - 1]day_name = day + endings[day_number - 1]print(month_name, day_name, year_number)程式執行結果如下所示:Year:2021Month(1—12):2Day(1-31):26February 26th 2021
切片:

除了使用索引來訪問列表中的元素,也可以使用切片的方式來訪問指定索引範圍內的元素,正如字串切片中所介紹的那樣,在列表中的切片示例如下所示:

當指定步長時,切片如下所示:

如果切片的結果需要包含第一個元素,則可以省略第一個索引,如下所示:

如果切片的結果包含最後一個元素,則可以省略最後一個索引,如下所示:

由於進行切片時,切片的結果不包括最後一個元素,如果要指定結束索引,則可以使用內建len函式獲取列表的長度,然後將其作為結束索引,如下所示:

如果要複製列表,則可以省略起始索引和結束索引,如下所示:

序列相加

和之前介紹的字串拼接一樣,可以使用拼接符(+)來相加兩個列表,兩個列表相加後,返回一個新的列表,如下所示:

從上圖的結果可以看出,兩個列表相加後,新的列表的元素包含了原來列表的所有元素。

當兩個列表中存在重複的元素時,兩個列表相加後,會出現什麼情況呢?如下所示:

從上圖中可以兩個列表相加後,新的列表中包含了原來兩個列表中的所有元素(包括重複的元素),這是因為,列表中的元素是有索引值的,雖然元素值相同,當時索引不同。

當不同型別的序列相加會出現什麼情況呢?例如:列表和字串,具體如下所示:

這時直譯器會報TypeError——型別錯誤。通常來說,不能拼接或者相加兩個不同型別的序列。

乘法

在字串中介紹了字串的乘法,即將字串重複N次,並輸出新的字串,在列表中是否一樣呢?具體如下所示:

可以看到與字串的乘法相同,列表的乘法將原來的列表重複了N次,乘法實際就是進行了N - 1次自加法運算。

成員資格

列表的成員資格與字串的成員資格相同,使用in和not in運算子判斷成員資格,具體示例,如下所示:

列表元素型別

由於列表是一種容器,因此列表可以包含其他的型別的資料,即列表中的元素可以是字串、數字、列表、元組、字典等,如下所示:

PS:在對列表進行成員資格運算時,一定要注意元素的物件,如下所示:

上圖中south_cites是一個列表,在cites中沒有這樣的列表元素,只有字串元素,因此成員資格運算時返回的結果為False。

例項

一個關於成員資格的小程式例項,具體如下所示:

cites = [    ['成都', 'Chengdu'],    ['重慶', 'Chongqing'],    ['西安', 'Xian'],    ['昆明', 'Kunming']]chinese_name = input('請輸入城市的中文名:')english_name = input('請輸入城市的英文名:')city_name = [chinese_name, english_name]if city_name in cites:    print('恭喜你,猜對了!')else:    print('很抱歉,猜錯了。')程式執行結果如下所示:請輸入城市的中文名:成都請輸入城市的英文名:Chengdu恭喜你,猜對了!
總結

本節主要介紹了序列的通用操作:

索引切片加法乘法成員資格

從本節開始,將會有一些小程式檔案,如果需要可以關注並留言或者私信小編。歡迎大家關注、轉發、訂閱、點評!

10
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 鴻蒙核心原始碼分析(工作模式篇) | 鴻蒙開機程式碼長什麼樣?