python的list索引
⑴ python的list 和tupe
一、list
list是python內置的有序的列表,可以隨時添加和刪除其中的元素
1、 定義
list_name = ["param1","param2","param3"]
2、訪問
1)用索引來訪問,索引從0開始
索引不可以越界,否則會報錯,最後一個元素的索引是len(city) - 1
2)還可以從後開始訪問 最後一個元素的索引為-1 依次類推,第一個元素的索引為-len(city)
>>> city[-1]
>>> '廣州'
3、元素的追加
4、元素的插入
在city的索引1處增加 重慶
>>> city.insert(1,'重慶')
>>> city
>>> ['北京', '重慶', '上海', '廣州', '南京']
5、元素的刪除
1)刪除末尾
2)刪除指定位置元素 pop(i),i為索引值
6、元素的替換
7、二維list
訪問的時候 我們就可以直接 city[1][0] city[1][1]來訪問 其中的元素值
二、tuple(元組)
tupe和list的最大的區別就是 tuple一旦被創建 就無法修改
1、定義
2、訪問
和list是一樣的 country[0],country[1]。由於tuple是不可變的,所以沒有append 和insert 函數
3、 一個元素的tuple
我們發現 當tuple的元素只有一個元素的時候,python會認為括弧就是小括弧的功能,就會按照整數或者字元串解析,為了解決這個問題,python規定這種情況 在後面加一個逗號','就可以
4、 tuple的指向不變
你會驚訝,怎麼可以變了呢??
其實在python內部,c[0],c[1]指向 1 和 2,而c[2]是指向的一個list對象,其實變的不是tuple的元素,而是list的元素。tuple一開始指向的list並沒有改成別的list,所以,tuple所謂的「不變」是說,tuple的每個元素,指向永遠不變.
⑵ python 要怎麼判斷list是否超出索引范圍
題主你好,
可以利用len()函數進行判斷. 詳細邏輯如下:
假設我的列表為: a=['2022-06-24','2022-06-25','2022-06-26','2022-06-27','2022-06-28']
我先使用len()函數拿到列表a的長度,並將該長存到變數length中: length = len(a)
而列表索引的取值是以0為起始,以列表的長度減1結束,拿本例來說,列表a的索引取值范圍就是a[0]到a[4]共5個元素.
因此題主在判斷時,可以直接使用索引值和列表的最大索引進行比較,也就是和拿本例來說也就是和len(a)-1進行比較, 拿題主中提問中的例子來說就是用 7和len(a)-1進行比較,如果7小於等於len(a)-1則說明7這個索引沒有超出列表的索引范圍,反之.
-----
方法二: 利用異常捕獲結構:
*.上面兩種方法寫的不是很好, 但希望可以給題主提供一些解題思路.
-----
擴展閱讀: 網頁鏈接
=====
希望可以幫到題主, 歡迎追問.
⑶ Python 數據處理(二十四)—— 索引和選擇
如果你想獲取 'A' 列的第 0 和第 2 個元素,你可以這樣做:
這也可以用 .iloc 獲取,通過使用位置索引來選擇內容
可以使用 .get_indexer 獲取多個索引:
警告 :
對於包含一個或多個缺失標簽的列表,使用 .loc 或 [] 將不再重新索引,而是使用 .reindex
在以前的版本中,只要索引列表中存在至少一個有效標簽,就可以使用 .loc[list-of-labels]
但是現在,只要索引列表中存在缺失的標簽將引發 KeyError 。推薦的替代方法是使用 .reindex() 。
例如
索引列表的標簽都存在
先前的版本
但是,現在
索引標簽列表中包含不存在的標簽,使用 reindex
另外,如果你只想選擇有效的鍵,可以使用下面的方法,同時保留了數據的 dtype
對於 .reindex() ,如果有重復的索引將會引發異常
通常,您可以將所需的標簽與當前軸做交集,然後重新索引
但是,如果你的索引結果包含重復標簽,還是會引發異常
使用 sample() 方法可以從 Series 或 DataFrame 中隨機選擇行或列。
該方法默認會對行進行采樣,並接受一個特定的行數、列數,或數據子集。
默認情況下, sample 每行最多返回一次,但也可以使用 replace 參數進行替換采樣
默認情況下,每一行被選中的概率相等,但是如果你想讓每一行有不同的概率,你可以為 sample 函數的 weights 參數設置抽樣權值
這些權重可以是一個列表、一個 NumPy 數組或一個 Series ,但它們的長度必須與你要抽樣的對象相同。
缺失的值將被視為權重為零,並且不允許使用 inf 值。如果權重之和不等於 1 ,則將所有權重除以權重之和,將其重新歸一化。例如
當應用於 DataFrame 時,您可以通過簡單地將列名作為字元串傳遞給 weights 作為采樣權重(前提是您要采樣的是行而不是列)。
sample 還允許用戶使用 axis 參數對列進行抽樣。
最後,我們還可以使用 random_state 參數為 sample 的隨機數生成器設置一個種子,它將接受一個整數(作為種子)或一個 NumPy RandomState 對象
當為該軸設置一個不存在的鍵時, .loc/[] 操作可以執行放大
在 Series 的情況下,這實際上是一個追加操作
可以通過 .loc 在任一軸上放大 DataFrame
這就像 DataFrame 的 append 操作
由於用 [] 做索引必須處理很多情況(單標簽訪問、分片、布爾索引等),所以需要一些開銷來搞清楚你的意圖
如果你只想訪問一個標量值,最快的方法是使用 at 和 iat 方法,這兩個方法在所有的數據結構上都實現了
與 loc 類似, at 提供了基於標簽的標量查找,而 iat 提供了基於整數的查找,與 iloc 類似
同時,你也可以根據這些索引進行設置值
如果索引標簽不存在,會放大數據
另一種常見的操作是使用布爾向量來過濾數據。運算符包括:
|(or) 、 &(and) 、 ~ (not)
這些必須用括弧來分組,因為默認情況下, Python 會將 df['A'] > 2 & df['B'] < 3 這樣的表達式評估為 df['A'] > (2 & df['B']) < 3 ,而理想的執行順序是 (df['A'] > 2) & (df['B'] < 3)
使用一個布爾向量來索引一個 Series ,其工作原理和 NumPy ndarray 一樣。
您可以使用一個與 DataFrame 的索引長度相同的布爾向量從 DataFrame 中選擇行
列表推導式和 Series 的 map 函數可用於產生更復雜的標准
我們可以使用布爾向量結合其他索引表達式,在多個軸上索引
iloc 支持兩種布爾索引。如果索引器是一個布爾值 Series ,就會引發異常。
例如,在下面的例子中, df.iloc[s.values, 1] 是正確的。但是 df.iloc[s,1] 會引發 ValueError 。
⑷ python中的list和array的不同之處
在Python中,list和array都可以根據索引來取其中的元素,但是list可以用append或者+來新增元素或者添加數組,而array不行。具體區別如下:
1、作用不同
list是處理一組有序項目的數據結構;
array數組存儲單一數據類型的多維數組;
2、內置數據類型
list是Python的內置數據類型;
array數組需要導入標准庫才行,不屬於內慎賣腔置類型;
3、數據類型寬衫是否相同
list中的數據類不必相同的,即每個元素可以是不同的數據類型;
array則是由Numpy封裝,存放的元素都是相同的數據類型;
4、運算
列表list不可以進行數學四則運算;
數組array可以進行配爛數學四則運算;
⑸ 如何在python列表中查找某個元素的索引
一、創建一個列表
只要把逗號分隔的不同的數據項使用方括弧括起來即可。與字元串的索引一樣,列表索引從0開始。列表可以進行截取、組合等。如下所示:
七、Python列表操作的函數和方法
列表操作包含以下函數:1、cmp(list1, list2):比較兩個列表的元素
2、len(list):列表元素個數
3、max(list):返回列表元素最大值
4、min(list):返回列表元素最小值
5、list(seq):將元組轉換為列表
列表操作包含以下方法:
1、list.append(obj):在列表末尾添加新的對象
2、list.count(obj):統計某個元素在列表中出現的次數
3、list.extend(seq):在列表末尾一次性追加另一個序列中的多個值(用新列表擴展原來的列表)
4、list.index(obj):從列表中找出某個值第一個匹配項的索引位置
5、list.insert(index, obj):將對象插入列表
6、list.pop(obj=list[-1]):移除列表中的一個元素(默認最後一個元素),並且返回該元素的值
7、list.remove(obj):移除列表中某個值的第一個匹配項
8、list.reverse():反向列表中元素
9、list.sort([func]):對原列表進行排序。
⑹ python中list(range())、range()、list()函數的用法
轉自 https://www.cnblogs.com/foremostxl/p/9374771.html
Python range() 函數返回的是一個可迭代對象(類型是對象),而不是列表類型, 所以列印的時候不會列印列表。
函數語法:
range(stop)range(start,stop,step)//默認start為0,step為1
Python list() 函數是對象迭代器,可以把range()返回的可迭代對象轉為一個列表,返回的變數類型為列表。
list() 方法用於將元組轉換為列表。
註: 元組與列表是非常類似的,區別在於元組的元素值不能修改,元組是放在括弧中( ),列表是放於方括弧中[ ]。
元組中只包含一個元素時,需要在元素後面添加逗號
tup1=(50,)
list、元組與字元串的索引一樣,列表索引從0開始。列表可以進行截取、組合等。
⑺ python語句list執行結果
Python語句list(range(1,10,3))執行結果為[1,4,7]。
語法是:range(start,stop[,step])
參數說明:
(1)start:計數從start開始,默認是從0開始。例如range(5)等價於range(0,5);
(2)stop:計數到stop結束,但不包括stop。例如:range(0,5)是[0,1,2,3,4]沒有5;
(3)step:步長,默認為1。例如:range(0,5)等價於range(0,5,1)。
因此,range(1,10,3)的意思是1到10之間的tuple,間隔為3,所以結果是(1,4,7)。
列表(List)是最常用的Python數據類型,它可以作為一個方括弧內的逗號分隔值出現。
所以,list(range(1,10,3))執行結果為[1,4,7]。
(7)python的list索引擴展閱讀
Python列表函數&方法
Python包含以下函數:
1、亂運cmp(list1, list2):比較兩個列表的元素;
2、len(list):列表元素個數;
3、max(list):返回列表元素最大值;
4、min(list):返回列表元素最小值;
5、list(seq):將元組轉換為列表。
Python包含以下方法:
1、list.append(obj):在列表末尾添加新的對象;
2、list.count(obj):統計某個元芹陪鬧素在列表中出現的次數;
3、list.extend(seq):在列表末尾一次性追加另嫌罩一個序列中的多個值(用新列表擴展原來的列表);
4、list.index(obj):從列表中找出某個值第一個匹配項的索引位置;
5、list.insert(index, obj):將對象插入列表;
6、list.pop([index=-1]):移除列表中的一個元素(默認最後一個元素),並且返回該元素的值;
7、list.remove(obj):移除列表中某個值的第一個匹配項;
8、list.reverse():反向列表中元素;
9、list.sort(cmp=None, key=None, reverse=False):對原列表進行排序。
⑻ python如何創建一個具有索引的list
創建列表的列表不就行了。如:
lst=[]
for i in range(8):
====lst.append([for v in range(i+1)])