python之list列表

>>>print(“今天就簡單的寫寫python中的列表,打發一下時間”)

1.簡介

python中的列表就類似於數組,但是和數組有些不同。在python中創建一個列表時,會在內存中創建一個類似數組的數據結構來存儲數據。python的list可以和數組一樣有下標的操作,並且下標從0開始。列表中存儲的數據類型可以是混合的不同數據類型。

2.list內置操作函數

list可以有一下幾個內置函數(BIT,built- in functions)來操作list##如果想要查看python的內置函數列表可以在IDLE shell中輸入dir(__builtins__),builtins的前後分別是兩個下劃線字符。

append():在列表的後面添加列表數據項。

extend():在列表的末尾添加一個數據項集合。

pop():從列表末尾刪除數據項。

remove():在列表中找到一個指定的數據項並刪除。

insert():在某個特定的位置之前插入一個數據項。

3.還是拿更直觀的實例說話吧。

下面代碼中的numbers list之間是帶有下劃線字符的,不知道爲啥在代碼中看不到罵人

>>> numbers_list=['zero','one',2,'three','four']#創建一個list
>>> print(numbers_list)#打印
['zero', 'one', 2, 'three', 'four']
>>> print(len(numbers_list))#len()爲BIT獲得長度
5
>>> print(numbers_list[2])
2
>>> print(numbers_list[5])#越界錯誤
Traceback (most recent call last):
  File "<pyshell#4>", line 1, in <module>
    print(numbers_list[5])
IndexError: list index out of range
>>> numbers_list.append('five')#append()末尾添加數據項
>>> print(numbers_list)
['zero', 'one', 2, 'three', 'four', 'five']
>>> numbers_list.pop()#pop()
'five'
>>> print(numbers_list)
['zero', 'one', 2, 'three', 'four']
>>> numbers_list.extend(['five',6])#添加列表數據項集合
>>> print(numbers_list)
['zero', 'one', 2, 'three', 'four', 'five', 6]
>>> numbers_list.remove('three')#刪除查找到的數據項
>>> print(numbers_list)
['zero', 'one', 2, 'four', 'five', 6]
>>> numbers_list.insert(3,'three')#指定位置前插入數據項
>>> print(numbers_list)
['zero', 'one', 2, 'three', 'four', 'five', 6]

4.遍歷list數據項

遍歷list的所有數據項可以使用for和while。除非有充分的理由使用while循環,遍歷一個列表時,總要使用for循環較好。

for循環的結構爲:

for 自定義標識符 in 列表:
    
      列表處理代碼

while循環結構爲:

while 條件conditions:

      列表處理代碼塊

針對上面定義的numbers_list遍歷的代碼如下:

for循環如下:

item list 和numbers list 之間都分別有下劃線字符罵人

for item_list in numbers_list:
       print(item_list)
while循環如下:

count=0
while count<len(numbers_list):
       print(numbers_list[count])
       count=count+1

對比上面兩個迭代遍歷,使用for,不會遇到計數器的錯誤。

5.遍歷嵌套的list數據項

在list中是可以嵌套list的,例如下面創建的list,以及下標對應的元素,如下代碼所示,(同樣在 each item 和nested list分別之間有下劃線字符,竟然在代碼區看不到罵人):
>>> nested_list=['A','B',['a','b',[1,2]]]
>>> print(nested_list[0])
A
>>> print(nested_list[2])
['a', 'b', [1, 2]]
>>> print(nested_list[2][1])
b
>>> print(nested_list[2][2])
[1, 2]
>>> print(nested_list[2][2][0])
1
>>> 
對於這種嵌套的list,如果使用第四部分的for循環進行遍歷的話,得到的結果如下所示:
>>> for each_item in nested_list:
	print(each_item)

A
B
['a', 'b', [1, 2]]
>>> 
這種遍歷方式是不能遍歷所有嵌套列表中的每個數據項的。還好python中提供了isinstance()的BIT,來判斷數據項元素是不是某個指定類型的數據對象。
利用isinstance()方法可以寫到如下的代碼:
>>> for each_item in nested_list:
	if isinstance(each_item,list):#if 判斷是否屬於list
		for nested_item in each_item:
			print(nested_item)
	else:
		print(each_item)

A
B
a
b
[1, 2]
>>>
由於上面的代碼只進行了一次if isinstance判斷,只能處理一層嵌套。如果採用上面的方式來遍歷所有嵌套列表的數據項,是提前需要知道嵌套的層次的,這樣會重複出現if else的代碼段,回使代碼變得複雜。到這裏,由於會重複出現一些代碼,可以定義個函數來進行代碼的複用,通過遞歸調用定義的函數就可以遍歷每一個數據項。
定義函數的格式爲:
def 函數名(參數列表):

      函數代碼塊
此處定義的函數爲:
>>> def print_item(the_list):
	for each_item in the_list:
		if isinstance(each_item,list):
			print_item(each_item)#遞歸調用
		else:
			print(each_item)
調用該函數得到結果爲:
>>> print_item(nested_list)
A
B
a
b
1
2
>>> 
哈哈,可以了,遍歷了所有的數據項元素。

6.總結

簡單的list介紹就到這裏了,這裏有append()、extend()、remove()、pop()、insert()、len()、isinstance()、for 、while 、if ……else 和def 函數等。
哈哈,list就想”滿血“的數組,用帶有中括號[ ] 包圍的數據項集合,數據項集合之間用逗號隔開來創建。
list真是個”打了激素“的數組,比數組強悍,封裝定義的高層的數組。
list的嵌套也挺有意思吧。





發佈了41 篇原創文章 · 獲贊 4 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章