list 根據某個數字所在位置_【Python學習筆記】09、使用list和tuple

a5834d8bbc312822b7864f1cd8d07a95.gif

list

Python內置的列表數據類型是:list。list是一種有序的集合,可以隨時添加和刪除其中的元素。如:

>>> classmates = ['Kuaie', 'Bob', 'Tracy']>>> classmates['Kuaie',?'Bob',?'Tracy']

變量classmates就是一個list。用len()函數可以獲得list元素的個數

>>> len(classmates)3

用索引來訪問list中每一個位置的元素,索引是從0開始的,當索引超出了范圍時,會報一個IndexError錯誤,所以,要確保索引不要越界,記得最后一個元素的索引是len(classmates) - 1

>>> classmates[0]'Kuaie'>>> classmates[1]'Bob'>>> classmates[3]Traceback (most recent call last):  File "", line 1, in <module>IndexError: list index out of range

如果要取最后一個元素,除了計算索引位置外,還可以用-1做索引,直接獲取最后一個元素:

>>>?classmates[-1]'Tracy'

以此類推,可以獲取倒數第2個、倒數第3個:

>>> classmates[-2]'Bob'>>> classmates[-3]'Kuaie'>>> classmates[-4]Traceback (most recent call last):  File "", line 1, in <module>IndexError: list index out of range

當然,倒數第4個就越界了。

list是一個可變的有序表,所以,可以往list中追加元素到末尾:

>>> classmates.append('Adam')>>> classmates['Kuaie', 'Bob', 'Tracy', 'Adam']

也可以把元素插入到指定的位置,比如索引號為1的位置:

>>> classmates.insert(1, 'Jack')>>> classmates['Kuaie', 'Jack', 'Bob', 'Tracy', 'Adam']

要刪除list末尾的元素,用pop()方法,要刪除指定位置的元素,用pop(i)方法,其中i是索引位置:

>>> classmates.pop()'Adam'>>> classmates['Kuaie', 'Jack', 'Bob', 'Tracy']>>> classmates.pop(1)'Jack'>>> classmates['Kuaie', 'Bob', 'Tracy']

要把某個元素替換成別的元素,可以直接賦值給對應的索引位置:

>>> classmates[1] = 'Sarah'>>> classmates['Kuaie', 'Sarah', 'Tracy']

list里面的元素的數據類型也可以不同,比如:

>>> L = ['Apple', 123, True]

list元素也可以是另一個list,比如:

>>> s = ['python', 'java', ['asp', 'php'], 'scheme']>>> len(s)4

如果一個list中一個元素也沒有,就是一個空的list,它的長度為0:

>>> L = []>>> len(L)0

tuple

另一種有序列表叫元組:tuple。tuple和list非常類似,但是tuple一旦初始化就不能修改,比如同樣是列出同學的名字:

>>>?classmates?=?('Kuaie',?'Bob',?'Tracy')

現在,classmates這個tuple不能變了,它也沒有append(),insert()這樣的方法。其他獲取元素的方法和list是一樣的,你可以正常地使用classmates[0]classmates[-1],但不能賦值成另外的元素。

不可變的tuple有什么意義?因為tuple不可變,所以代碼更安全。如果可能,能用tuple代替list就盡量用tuple。

tuple的陷阱:當你定義一個tuple時,在定義的時候,tuple的元素就必須被確定下來,比如:

>>> t = (1, 2)>>> t(1, 2)

如果要定義一個空的tuple,可以寫成()

>>> t = ()>>> t()

但是,要定義一個只有1個元素的tuple,如果你這么定義:

>>> t = (1)>>> t1

定義的不是tuple,是1這個數!這是因為括號()既可以表示tuple,又可以表示數學公式中的小括號,這就產生了歧義,因此,Python規定,這種情況下,按小括號進行計算,計算結果自然是1

所以,只有1個元素的tuple定義時必須加一個逗號,,來消除歧義:

>>> t = (1,)>>> t(1,)

Python在顯示只有1個元素的tuple時,也會加一個逗號,,以免你誤解成數學計算意義上的括號。

最后來看一個“可變的”tuple:

>>> t = ('a', 'b', ['A', 'B'])>>> t[2][0] = 'X'>>> t[2][1] = 'Y'>>> t('a', 'b', ['X', 'Y'])

這個tuple定義的時候有3個元素,分別是'a''b'和一個list。不是說tuple一旦定義后就不可變了嗎?怎么后來又變了?

別急,我們先看看定義的時候tuple包含的3個元素:

d3b63371ee1c763c657652ad8206a498.png

當我們把list的元素'A''B'修改為'X''Y'后,tuple變為:

55a7279cb0b000be98ee77001962faab.png

表面上看,tuple的元素確實變了,但其實變的不是tuple的元素,而是list的元素。tuple一開始指向的list并沒有改成別的list,所以,tuple所謂的“不變”是說,tuple的每個元素,指向永遠不變。即指向'a',就不能改成指向'b',指向一個list,就不能改成指向其他對象,但指向的這個list本身是可變的!

理解了“指向不變”后,要創建一個內容也不變的tuple怎么做?那就必須保證tuple的每一個元素本身也不能變。

小結

list和tuple是Python內置的有序集合,一個可變,一個不可變。根據需要來選擇使用它們。

6104fcf6397a0df11898800f060ad5fd.gif

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/271408.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/271408.shtml
英文地址,請注明出處:http://en.pswp.cn/news/271408.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

連接maven_如何在Eclipse中使用Maven工程連接遠程的Spark

如何在Eclipse中使用Maven工程連接遠程的Spark本地Spark跑不會出現什么問題&#xff0c;但是切換到服務器上各種問題。異常java.lang.ClassCastException: cannot assign instance of java.lang.invoke.SerializedLambda to fieldorg.apache.spark.api.java.JavaRDDLike$$anonf…

FastJSON的依賴

<!-- 添加 FastJSON依賴 --> <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.59</version> </dependency>

莫隊模板

莫隊的模板&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 嘿嘿嘿 #include<bits/stdc.h> using namespace std; const int maxn 1000005; inline int read() {int x0,f1;char chgetchar();while(ch>9||ch<0){if(ch-)f-1;chgetchar();}while(ch&g…

計算機系統基礎:文件的存取和存儲空間管理知識筆記

1、文件的存取 文件的存取實際上就是針對文件存儲器上物理塊的讀寫操作。存取方法主要有順序存儲、隨機存儲兩種。 2、文件存儲空間管理 磁盤分配表&#xff1a;外存空閑空間管理的數據結構。 2.1 空閑空間管理方法 1、空閑區表 將外存空間的一個連續未分配的區域稱為空閑區。操…

語言篩選法選素數怎么解決輸出超限_論文深耕 | 什么時候才能把文獻看完?——論文的正確篩選、閱讀順序...

Hello!這是你與「大學生科研競賽」的第 50 次相遇。搞科研免不了要看文獻&#xff0c;一提到看文獻就有很多人頭疼&#xff0c;“那么多文獻什么時候才能看完啊&#xff1f;”01篩選論文這個時候就需要我們對文獻有一個篩選&#xff0c;篩選的辦法也很簡單&#xff1a;1標題首先…

ft2232驅動安裝方法_ST-Link資料03_ST-Link固件升級、驅動下載安裝方法

說明&#xff1a;本文原創作者『strongerHuang』本文首發于微信公眾號『嵌入式專欄』&#xff0c;同時也更新在我的個人網站&#xff1a;EmbeddedDevelop一、寫在前面前兩篇文章講述的都是關于ST-Link的一些理論知識&#xff0c;建議初學者看看&#xff1a;ST-Link資料01_ST-Li…

Java 泛形通配符 ?

Class<Integer> cla;與Class<?> cl; 前一個表示baicla只能指向Integer這種類型&#xff0c;而后一個cl表示可以du指向任意類型。 cla Integer.class 可以&#xff0c;但cla Double.class就不可zhi以。 但是cl Integer.class 可以&#xff0c;cl Double.class也…

操作系統基礎:計算機作業管理知識筆記

1、計算機作業的概念計算機中的作業是為了完成某個用戶的計算任務所做工作的總和。作業管理程序&#xff1a;操作系統中用來控制作業進入、執行、撤銷的一組程序。2、作業與作業的控制方式脫機控制方式&#xff1a;用戶需要把自己需要計算機完成的任務用作業控制語言編寫成作業…

easyui的驗證

多重驗證&#xff1a; Js代碼 { field : startPort, title : "起始端口", editor: "text", width : 50, editor: { …

403 forbidden_[SpringSecurity] 自定義403頁面

使用 Spring Security 時經常會看見 403&#xff08;無權限&#xff09;&#xff0c;默認情況下 顯示的效果如下&#xff1a;而在實際項目中可能都是一個異步請求&#xff0c;顯示上述效果對于用戶 就不是特別友好了。Spring Security 支持自定義權限受限。具體做法1.新建一個類…

大疆口袋相機美顏怎么設置_靈眸Osmo口袋云臺相機評測-大疆靈眸云相機使用說明...

大疆正式發布靈眸Osmo口袋云臺相機&#xff0c;機身小巧&#xff0c;便于隨身攜帶&#xff0c;可拍攝4K/60fps超清影像&#xff0c;配備了獨立屏幕&#xff0c;可愛的小巧機身對女性用戶更加合適。據說這款產品 DJI 憋了一年多才正式發布&#xff0c;本期9號小編就帶大家一起來…

java判斷當前時間距離第二天凌晨的秒數

/*** 判斷當前時間距離第二天凌晨的秒數** return 返回值單位為[s:秒]*/public Long getSecondsNextEarlyMorning() {Calendar cal Calendar.getInstance();cal.add(Calendar.DAY_OF_YEAR, 1);cal.set(Calendar.HOUR_OF_DAY, 0);cal.set(Calendar.SECOND, 0);cal.set(Calendar…

硬件基礎:嵌入式軟件可靠性設計要注意的問題

自從40多年前嵌入式系統誕生以來&#xff0c;隨著技術的發展和需求的變化&#xff0c;嵌入式系統軟件就在嵌入式系統中越來越重要。現在&#xff0c;甚至一些嵌入式系統硬件一模一樣&#xff0c;僅僅是軟件不同&#xff0c;就是不一樣的產品&#xff08;如交換機和路由器&#…

jdk1.6 改 jdk1.7或jdk1.8(改回也可以)(圖文詳解)

不多說&#xff0c;直接上干貨&#xff01; 第一步&#xff1a;設置默認使用的JDK和JRE環境 具體步驟&#xff1a;菜單window->preferences->java->Installed JRES 點中了&#xff0c;右邊的窗口點Add按鈕 記住選擇添加安裝了Java目錄下的Jdk目錄&#xff0c;而不是Jr…

python替換所有標點符號 正則_python 把標點符號替換為空

Python str.replace(old, new[, max]) 方法把字符串str中的 old&#xff08;舊字符串&#xff09; 替換成 new(新字符串)&#xff0c;如果指定第三個參數max&#xff0c;則替換不超過 max 次。 如果非要用replace()函數來實現要這樣寫&#xff1a; import string m l forc inst…

無法打開“XXXX”,因為Apple無法檢查其是否包含惡意軟件。怎么解決?

今天在安裝navicat的時候&#xff0c;因為apple無法檢查其是否包含惡意軟件&#xff0c;大概是如下圖所示&#xff1a; 仔細查詢過后才發現&#xff0c;只需要在Mac上設置下即可&#xff0c;具體方法如下&#xff1a; 打開Mac自帶的軟件「終端」&#xff08;一般在“其它”這個…

vue路由跳轉子組件_vue-router之路由鉤子(組件內路由鉤子必須在路由組件調用,子組件沒用)...

模式vue-router中的模式選項主要在router實例化的時候進行定義的&#xff0c;如下const router new VueRouter({mode: ‘history‘, // 兩種類型history 還有 hashroutes: routes // 可以縮寫成routes})有兩種模式可供選擇&#xff0c;history 和 hash&#xff0c;大致對比一下…

計算機網絡基礎概念知識筆記

1、計算機網絡的發展階段 1.1、具有通信功能的單機系統 該階段的模式為終端-計算機網絡&#xff0c;屬于早期計算機網絡的主要形式。它將一臺計算機經過通信線路和若干個終端直接相連 1.2 具有通信功能的多機系統 針對單機系統的改進&#xff0c;在主計算機的外圍增加了一臺計算…

python模塊下載失敗_python 安裝tushare模塊出錯的一個解決方法

&#xff08;寫于20200519&#xff09; Tushare金融大數據社區 免費提供各類金融數據和區塊鏈數據。我學python的動力之一就是使用金融數據進行量化投資。 原以為安裝thshare是很容易的事&#xff0c;在cmd窗口輸入pip install tushare后&#xff0c;似乎安裝沒報錯&#xff0c…

winform中鍵盤和鼠標事件的捕捉和重寫(轉)

在 編寫winform應用程序時&#xff0c;有時需要無論在哪個控件獲取焦點時&#xff0c;對某一個鍵盤輸入或者鼠標事件都進行同樣的操作。比如編寫一個處理圖片的應用程序時&#xff0c; 希望無論當前哪個控件獲得焦點&#xff0c;當用戶按上、下、左、右鍵時&#xff0c;圖片控件…