首頁  >  文章  >  後端開發  >  關於Python中列表list常見操作介紹

關於Python中列表list常見操作介紹

高洛峰
高洛峰原創
2017-03-22 11:16:051779瀏覽

主要涉及知識點

清單是我們python裡面最常見的資料型別,我們主要有以下的操作。

1、索引

2、切片

3、追加

4、刪除

5、長度

6、循環 (也稱為遍歷)

7、包含

8、巢狀

##例如定義清單:

List2=['openstack','python','linux',"docker","zabbix","nginx","linux","linux","123","ww33##"]
或者
List2=list(['openstack','python','linux',"docker","zabbix","nginx","linux","linux","123","ww33##"])

主要涉及的基本方法以及介紹

關於Python中列表list常見操作介紹

# 簡單的範例:

 一、清單的定義

#

 >>> List2=list(['openstack','python','linux',"docker","zabbix","nginx","linux","
linux","123","ww33##"])
>>> print(List2)
['openstack', 'python', 'linux', 'docker', 'zabbix', 'nginx', 'linux', 'linux',
'123', 'ww33##']
或者List2=['openstack','python','linux',"docker","zabbix","nginx","linux","
linux","123","ww33##"] 我们直接用后面的这种定义,检验和模拟相关方法和切片等。

二、切片與列表取值

切片主要是針對獲取清單中部分或單一元素的方法,透過下標存取清單中的元素,下標從0開始計數

取列表中的某一個值(透過下標取值,下標從0開始)

List2=['openstack','python','linux',"docker","zabbix","nginx","linux","linux","123","ww33##"]
print(List2[0])
print(List2[1])
print(List2[-2])
结果:
openstack
python
123
 
    我们发现在取值时下标为零的恰好取的值为是第一位元素,更好的证明了下标从零开始这一说法,
 同时发现print(List2[-2])恰好是倒数第二位元素,由此可见不仅顺着取值,可以倒着取值。
切片:访问里面的前多个值:
List2=['openstack','python','linux',"docker","zabbix","nginx","linux","linux","123","ww33##"]
 
print(List2[0:3]) #取前三个
 
结果:
['openstack', 'python', 'linux']
再试试
print(List2[:3])
结果:
['openstack', 'python', 'linux']
由此我们可以看出开始下标是0的时候,可以省略不写,还需要注意下标[0:3]能取到1,2,3位的元素,
即表示第四位取不到,在我们边界取值时需要注意。
print(List2[3:-1]) #取不到最后一位
print(List2[3:])  #取得第四位到最后一位
print(List2[2:9:2])#取出下标为第二位到下标为9之间的 每隔一个元素取一次
print(List2[-3:-1]) #倒着取值取出倒数第三位和倒数第二位
print(List2[-3:])#取出倒数的后三位
print(List[0::2])#每隔一个元素取一次
print(list[::2]) #每隔一个元素取一次 和上面的一样
结果:
['docker', 'zabbix', 'nginx', 'linux', 'linux', '123']
['docker', 'zabbix', 'nginx', 'linux', 'linux', '123', 'ww33##']
['linux', 'zabbix', 'linux', '123']
['linux', '123']
['linux', '123', 'ww33##']

三、列表增加元素 


   主要使用append的方法追加元素,在最後增加

List2.append("winner")
print(List2)
结果:
['openstack', 'python', 'linux', 'docker', 'zabbix', 'nginx', 'linux', 'linux', '123', 'ww33##', 'winner']

在某一位置插入一元素,可以使用insert方法實現

List2.insert(2,"baidu") #在第三位插入元素baidu
print(List2)
结果:
['openstack', 'python', 'baidu', 'linux', 'docker', 'zabbix', 'nginx','123', 'ww33##']
由此看出在某位置插入时,该位置元素整体向后移动。

四、修改某一位置插入一元素,可以使用insert方法實現

List2[2]="我的钢铁"
List2[-1]="人生苦短,我用python!"
#List2.insert(2,"baidu")
print(List2)
['openstack', 'python', '我的钢铁', 'docker', 'zabbix', 'nginx', '123', '人生苦短,我用python!']

四、修改某元素的值

    修改某元素的值,一般透過重新賦值的方法來實現。

List2.pop(1)
print(List2)
结果
['openstack', 'linux', 'docker', 'zabbix', 'nginx', '123', 'ww33##']
List2.pop(-4)
print(List2)
结果:
['openstack', 'python', 'linux', 'docker', 'nginx', '123', 'ww33##']

 五、刪除

    刪除分為刪除一個和全部刪除,在刪除個別的時候,我們可以用remove()方法和pop()方法,用del和 clear

()方法可以刪除整個清單。接下來根據實例分析一下幾種方法有什麼差別。

pop()方法中間的參數是下標,不帶參數的時候預設刪除最後一位。

List2.remove('linux')
print(List2)
结果:
['openstack', 'python', 'docker', 'zabbix', 'nginx', '123', 'ww33##']
当列表存在相同元素linux时:
List2=['openstack','linux','python','linux',"docker","zabbix","nginx","123",'linux',"ww33##"]
List2.remove('linux')
print(List2)
结果:
['openstack', 'python', 'linux', 'docker', 'zabbix', 'nginx', '123', 'linux', 'ww33##']
当存在多个值时只会删除一个值

remove()方法中間的參數直接是元素的內容

List2.clear()
print(List2)
结果:
[]

clear()方法使用,是對整個列表的處理

del  List2
print(List2)
del  List[2]
结果:
Traceback (most recent call last):
  File "C:/Users/Administrator/PycharmProjects/s14/jiounumber.py", line 21, in <module>
    print(List2)
NameError: name &#39;List2&#39; is not defined
删除个别元素 结合切片
List2=[&#39;openstack&#39;,&#39;云计算&#39;,&#39;python&#39;,"中国","中东",&#39;linux&#39;,123,"ww33##"]
del List2[2]
print(List2)
结果:
[&#39;openstack&#39;, &#39;云计算&#39;, &#39;中国&#39;, &#39;中东&#39;, &#39;linux&#39;, 123, &#39;ww33##&#39;]

del  可以刪除整個列表或單一元素 

List2=[&#39;openstack&#39;,&#39;python&#39;,&#39;linux&#39;,"docker","zabbix","nginx","123","ww33##"]
索引:
print(List2.index("linux"))
结果
2
 
统计:
print(List2.count("linux"))
结果
1
 
List2=[&#39;openstack&#39;,&#39;linux&#39;,&#39;python&#39;,&#39;linux&#39;,"docker","zabbix",&#39;linux&#39;,"nginx","123","ww33##"]
print(List2.index("linux"))
print(List2.count("linux"))
结果:
1
3

 觀察結果,可以發現del是刪除了定義的列表而,clear()是清空了列表的元素。


六、查詢某個元素位置以及出現的次數(列表元素可以重複)

    對列表的查詢主要有統計列表是多大的長度和查詢某內容的元素在什麼位置,主要使用index()索引方法和count

()元素出現次數方法實現,。

List2=[&#39;openstack&#39;,&#39;linux&#39;,&#39;python&#39;,&#39;linux&#39;,"docker","zabbix",&#39;linux&#39;,"nginx","123","ww33##"]
List2.reverse()
print(List2)
结果:
[&#39;ww33##&#39;, &#39;123&#39;, &#39;nginx&#39;, &#39;linux&#39;, &#39;zabbix&#39;, &#39;docker&#39;, &#39;linux&#39;, &#39;python&#39;, &#39;linux&#39;, &#39;openstack&#39;]
 
排序:
List2.sort()
print(List2)
[&#39;123&#39;, &#39;docker&#39;, &#39;linux&#39;, &#39;linux&#39;, &#39;linux&#39;, &#39;nginx&#39;, &#39;openstack&#39;, &#39;python&#39;, &#39;ww33##&#39;, &#39;zabbix&#39;]
再稍微复杂一点,里面添加中文和整数等内容
List2=[&#39;openstack&#39;,&#39;云计算&#39;,&#39;python&#39;,123,"docker","zabbix",&#39;linux&#39;,30.84,"123","ww33##"]
List2.sort()
print(List2)
执行结果:
Traceback (most recent call last):
  File "C:/Users/Administrator/PycharmProjects/s14/jiounumber.py", line 24, in <module>
    List2.sort()
TypeError: unorderable types: int() < str()
整型和字符串无法比较,接下来,再试试
List2=[&#39;openstack&#39;,&#39;云计算&#39;,&#39;python&#39;,"中国","中东",&#39;linux&#39;,"123","ww33##"]
List2.sort()
print(List2)
[&#39;123&#39;, &#39;linux&#39;, &#39;openstack&#39;, &#39;python&#39;, &#39;ww33##&#39;, &#39;中东&#39;, &#39;中国&#39;, &#39;云计算&#39;]

  由此可以看到,當一個元素含有多個形同的元素時,索引一般是找到第一個該元素。

七、列表的翻轉以及排序

    可以透過reverse()方法和sort

()方法實現對列表的翻轉和排序,所謂翻轉,就是將列表元素的位置重翻轉,而排序主要是根據Ascall碼來排序,

List2=[&#39;openstack&#39;,&#39;云计算&#39;,&#39;python&#39;,"中国","中东",&#39;linux&#39;,"123","ww33##"]
for  i  in List2 :
    print (i)
print(List2)
结果:
openstack
云计算
python
中国
中东
linux
123
ww33##
[&#39;openstack&#39;, &#39;云计算&#39;, &#39;python&#39;, &#39;中国&#39;, &#39;中东&#39;, &#39;linux&#39;, &#39;123&#39;, &#39;ww33##&#39;]
通过循环我们就可以找出列表的每个元素。同时我们也可以看出这时的打印和之前的有所不同
  由此發現列表的排序還是很NB的,關於上面的整數和字符串無法比較的,我們可以將整形轉換成字串比較

八、循環、包含以及copy

()、extend()方法

    循環,通常是透過for循環

的方式將清單中的元素印出來的方法

List2=[&#39;openstack&#39;,&#39;云计算&#39;,&#39;python&#39;,"中国","中东",&#39;linux&#39;,123,"ww33##"]
print( &#39;linuxww&#39;  in List2)
print(&#39;中东&#39; in List2)
print(123  in List2)
print( 12 in List2)
结果:
False
True
True
False

包含:我們可以判斷某個內容是否在該清單裡面,結果的回傳值是布林值Ture或False,存在為真不存在為假。

List2=[&#39;openstack&#39;,&#39;云计算&#39;,&#39;python&#39;,"中国","中东",&#39;linux&#39;,123,"ww33##"]
List1=[123,&#39;abc&#39;,&#39;中国&#39;]
#print( &#39;linuxww&#39;  in List2)
#print(&#39;中东&#39; in List2)
print(List2,List1)
print(List1)
List1.clear()
print(List1)
结果:
[&#39;openstack&#39;, &#39;云计算&#39;, &#39;python&#39;, &#39;中国&#39;, &#39;中东&#39;, &#39;linux&#39;, 123, &#39;ww33##&#39;] [123, &#39;abc&#39;, &#39;中国&#39;]
[123, &#39;abc&#39;, &#39;中国&#39;]
[]
 
由此发现extend方法并不会影响被合并列表(List1)的值,只有自己做其他操作时才会发生变化。

entend方法 使用該方法,可以將兩個清單合併到一個裡面,同時對其中的一個值不會發生任何的影響。

List2=[&#39;openstack&#39;,&#39;云计算&#39;,&#39;python&#39;,"中国","中东",&#39;linux&#39;,123,"ww33##"]
list3=List2.copy()
print(List2,list3)
结果:
[&#39;openstack&#39;, &#39;云计算&#39;, &#39;python&#39;, &#39;中国&#39;, &#39;中东&#39;, &#39;linux&#39;, 123, &#39;ww33##&#39;]
 [&#39;openstack&#39;, &#39;云计算&#39;, &#39;python&#39;, &#39;中国&#39;, &#39;中东&#39;, &#39;linux&#39;, 123, &#39;ww33##&#39;]
  
注意事项:
 List2=[&#39;openstack&#39;,&#39;云计算&#39;,&#39;python&#39;,["中国","中东"],&#39;linux&#39;,123,"ww33##"]
list3=List2.copy()
print(List2)
print(list3)
List2[2]="MYSQl DBA"
List2[3][1]="北京"
print(List2)
print(list3)
执行结果:
[&#39;openstack&#39;, &#39;云计算&#39;, &#39;python&#39;, [&#39;中国&#39;, &#39;中东&#39;], &#39;linux&#39;, 123, &#39;ww33##&#39;]
[&#39;openstack&#39;, &#39;云计算&#39;, &#39;python&#39;, [&#39;中国&#39;, &#39;中东&#39;], &#39;linux&#39;, 123, &#39;ww33##&#39;]
[&#39;openstack&#39;, &#39;云计算&#39;, &#39;MYSQl DBA&#39;, [&#39;中国&#39;, &#39;北京&#39;], &#39;linux&#39;, 123, &#39;ww33##&#39;]
[&#39;openstack&#39;, &#39;云计算&#39;, &#39;python&#39;, [&#39;中国&#39;, &#39;北京&#39;], &#39;linux&#39;, 123, &#39;ww33##&#39;]
我们将列表List2中的List2[2]的python和List2[3][1]的中东更改为List2[2]="MYSQl DBA"和List2[3][1]="北京
输出后发现复制的那一部分List2[3][1]复制后是一样的,而List2[2]的值会不一样。主要是内存的地址原因。
同时对这种情况想要复制相同的是不行的
List2=[&#39;openstack&#39;,&#39;云计算&#39;,&#39;python&#39;,["中国","中东"],&#39;linux&#39;,123,"ww33##"]
list3=List2
print(List2)
print(list3)
List2[2]="MYSQl DBA"
List2[3][1]="北京"
print(List2)
print(list3)
这里给list3赋值为List2这时会发现更改List2时,会直接更改list3的值
[&#39;openstack&#39;, &#39;云计算&#39;, &#39;python&#39;, [&#39;中国&#39;, &#39;中东&#39;], &#39;linux&#39;, 123, &#39;ww33##&#39;]
[&#39;openstack&#39;, &#39;云计算&#39;, &#39;python&#39;, [&#39;中国&#39;, &#39;中东&#39;], &#39;linux&#39;, 123, &#39;ww33##&#39;]
[&#39;openstack&#39;, &#39;云计算&#39;, &#39;MYSQl DBA&#39;, [&#39;中国&#39;, &#39;北京&#39;], &#39;linux&#39;, 123, &#39;ww33##&#39;]
[&#39;openstack&#39;, &#39;云计算&#39;, &#39;MYSQl DBA&#39;, [&#39;中国&#39;, &#39;北京&#39;], &#39;linux&#39;, 123, &#39;ww33##&#39;]
要想复制完全一样的,我们可以导入copy模块
import copy
List2=[&#39;openstack&#39;,&#39;云计算&#39;,&#39;python&#39;,["中国","中东"],&#39;linux&#39;,123,"ww33##"]
list3=copy.deepcopy(List2)
print(List2)
print(list3)
List2[2]="MYSQl DBA"
List2[3][1]="北京"
print(List2)
print(list3)
执行的结果:
[&#39;openstack&#39;, &#39;云计算&#39;, &#39;python&#39;, [&#39;中国&#39;, &#39;中东&#39;], &#39;linux&#39;, 123, &#39;ww33##&#39;]
[&#39;openstack&#39;, &#39;云计算&#39;, &#39;python&#39;, [&#39;中国&#39;, &#39;中东&#39;], &#39;linux&#39;, 123, &#39;ww33##&#39;]
[&#39;openstack&#39;, &#39;云计算&#39;, &#39;MYSQl DBA&#39;, [&#39;中国&#39;, &#39;北京&#39;], &#39;linux&#39;, 123, &#39;ww33##&#39;]
[&#39;openstack&#39;, &#39;云计算&#39;, &#39;python&#39;, [&#39;中国&#39;, &#39;中东&#39;], &#39;linux&#39;, 123, &#39;ww33##&#39;]
这时发现,List2元素的值改变不会影响list3的值,下面的这种copy,我们称为deep.copy,而列表的
copy()方法是一种浅copy

copy()方法

##可以實現清單的複製

List2=[&#39;openstack&#39;,&#39;云计算&#39;,&#39;python&#39;,"中国","中东",&#39;linux&#39;,123]
list3=["open","ip","config"]
print(List2+list3)
print(list3*3 )
结果:
[&#39;openstack&#39;, &#39;云计算&#39;, &#39;python&#39;, &#39;中国&#39;, &#39;中东&#39;, &#39;linux&#39;, 123, &#39;open&#39;, &#39;ip&#39;, &#39;config&#39;]
[&#39;open&#39;, &#39;ip&#39;, &#39;config&#39;, &#39;open&#39;, &#39;ip&#39;, &#39;config&#39;, &#39;open&#39;, &#39;ip&#39;, &#39;config&#39;]
+号实现的功能和之前的append()方式一样,而*表示重复,后面的的数字表示重复的次数。

九、其他清單的操作

    除了上述主要操作,我們也可以對列表做以下的操作。列表對 + 和  * 的運算子與字串相似。 + 號用於組合列表,* 號用於重複列表

List2=[&#39;openstack&#39;,&#39;云计算&#39;,&#39;python&#39;,"中国","中东",&#39;linux&#39;,123]
list3=["open","ip","config",&#39;999&#39;,&#39;2929&#39;,]
tet=("www","www",1234)
print(type(tet))
print(list(tet))
print(type(list(tet)))
print(List2+list3)
print(list3*3 )
print(len(list3))
print(max(list3))
print(min(list3))
 
结果:
<class &#39;tuple&#39;>  #元组tet的类型
[&#39;www&#39;, &#39;www&#39;, 1234] #print(list(tet))元组转换列表输出
<class &#39;list&#39;> #print(type(list(tet)))元组转化列表后的类型验证
[&#39;openstack&#39;, &#39;云计算&#39;, &#39;python&#39;, &#39;中国&#39;, &#39;中东&#39;, &#39;linux&#39;, 123, &#39;open&#39;, &#39;ip&#39;, &#39;config&#39;, &#39;999&#39;, &#39;2929&#39;]
[&#39;open&#39;, &#39;ip&#39;, &#39;config&#39;, &#39;999&#39;, &#39;2929&#39;, &#39;open&#39;, &#39;ip&#39;, &#39;config&#39;, &#39;999&#39;, &#39;2929&#39;, &#39;open&#39;, &#39;ip&#39;, &#39;config&#39;, &#39;999&#39;, &#39;2929&#39;]
5 #print(len(list3))列表list3的长度统计
open  #print(max(list3)) 列表的最大值
2929  #print(min(list3)) 列表最小值

 python列表函數

 在上面我們分析了python的列表方法,python列表還有一部分列表函數,常見的有max(list),min(list)以及len(list)和list(seq):

len(list ) 就是上面提到的列表的長度,

max(list) 列表的最大值

min(list)列表的最小值

list(seq)將元組轉換為列表,我們知道元組的基本屬性和列表一樣,差別就在於列表使用[]方括號定義,而元組是()小括號定義,以及元組的元素不能重新賦值。

範例

List2=[&#39;openstack&#39;,&#39;云计算&#39;,&#39;python&#39;,"中国","中东",[["open","ip"],"config",&#39;999&#39;,&#39;2929&#39;,]]
print(List2)
结果: 实现三层嵌套
[&#39;openstack&#39;, &#39;云计算&#39;, &#39;python&#39;, &#39;中国&#39;, &#39;中东&#39;, [[&#39;open&#39;, &#39;ip&#39;], &#39;config&#39;, &#39;999&#39;, &#39;2929&#39;]]

十、清單的巢狀

#

     在上面讲到列表的copy()方法时,我们就用到了列表,因为列表的元素可以是任何类型,所以列表的元素还可以是列表,这时候的列表就会形成嵌套关系。

例如:

List2=[&#39;openstack&#39;,&#39;云计算&#39;,&#39;python&#39;,"中国","中东",[["open","ip"],"config",&#39;999&#39;,&#39;2929&#39;,]]
print(List2)
结果: 实现三层嵌套
[&#39;openstack&#39;, &#39;云计算&#39;, &#39;python&#39;, &#39;中国&#39;, &#39;中东&#39;, [[&#39;open&#39;, &#39;ip&#39;], &#39;config&#39;, &#39;999&#39;, &#39;2929&#39;]]

总结:以上内容主要是python中对列表的操作,全部属于基础知识,并且所有的示例都是亲手实践所得到的结果,由于经验不足,或许只能理解列表知识的一部分,哪里有错误,还请各位朋友指正。

以上是關於Python中列表list常見操作介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn