天天看點

Python基礎學習-5.清單

5.清單

清單相當于其他語言的數組

清單的特點:

1.清單元素按順序有序排序

2.索引映射唯一資料

3.清單可以存儲重複資料

4.任意資料類型混存

5.根據需要動态配置設定和回收記憶體

a=10  #變量存儲的是一個對象的引用
list=['hello','world',98]
print(id(list))
print(type(list))
print(list)

------>
2276298158528
<class 'list'>
['hello', 'world', 98]
           

5.1清單的建立

'''建立清單的方式一,使用[]'''

lst=['hello','world',98]

'''建清單的方式二,使用内置函數list()'''
lst2=list(['hello','world',98])
           

5.2清單的查詢操作

擷取清單中指定元素的索引

index():

如查詢清單中存在N個相同元素,隻傳回相同元素中的第一個元素的索引

如果查詢的元素在清單中不存在,則會抛出ValueError

可以在start和stop之間查找

擷取清單中的單個元素

正向索引從0到N-1,舉例 lst[0]

逆向索引從-N到-1 舉例 lst[-N]

指定索引不存,抛出indexError

lst=['hello','world',45,'hello']
print(lst.index('hello'))   #清單中存在N個相同元素,隻傳回相同元素中的**第一個元素**的索引

輸出------->
0
           
list=['red','green','blue','yellow']
#正向索引
print(list[0])
print(list[1])
print(list[2])

#反向索引
print(list[-3])
print(list[-2])
print(list[-1])

==================>
red
green
blue
green
blue
yellow
           

清單腳本操作符

清單對+和的操作符與字元串相似,+号用于組合清單,*号用于重複清單

python表達式 結果 描述
len([1,2,3]) 3 長度
[1,2,3]+[4,5,6] [1,2,3,4,5,6] 組合
['good!']*4 ['good!','good!','good!','good!'] 重複
3 in[1,2,3] True 元素是否存在清單中
for x in [1,2,3]:print(x,end="") 1 2 3 疊代

清單的的截取和拼接、嵌套

#截取操作
print('-----截取操作------')
L=['Good','Morning','Lini']
print(L[2])
print(L[-2])
print(L[1:])

#拼接操作
print('-----拼接操作------')
num = [1,3,5,6,7,8]
num  += [2,4,9]
print(num)

#嵌套操作
print('-----嵌套操作------')
a = ['a','b','c']
n = [1,3,5]
x = [a,n]
print(x)
print(x[0])
print(x[0][1])

===================================》
-----截取操作------
Lini
Morning
['Morning', 'Lini']
-----拼接操作------
[1, 3, 5, 6, 7, 8, 2, 4, 9]
-----嵌套操作------
[['a', 'b', 'c'], [1, 3, 5]]
['a', 'b', 'c']
b
           

判斷元素在清單是否存在

元素 in 清單名
元素  not in 清單名
           

5.2清單元素的周遊

疊代器:是通路集合元素的一種方式。疊代器對象可以從集合的第一個元素開始通路,直到所有元素 被通路結束。

疊代器兩種方法:iter()和next()

for 疊代變量 in清單名:
    操作
           

eg1:

lst=[10,20,'python','hello']
print('p' in 'python')
print(10 in lst)
print(100 not in lst)

print('---疊代--')
for item in lst:
    print(item)

===========>
True
True
True
---疊代--
10
20
python
hello
           

eg2:

print('--------iter(),next()-------')
list=[1,2,3,5]
it = iter(list)
print(next(it))
print(next(it))

print('---for周遊--')
list1=[2,4,6,8]
it = iter(list1)
for a in it:
    print(a, end=" ")
    
==================================>
--------iter(),next()-------
1
2
---for周遊--
2 4 6 8 
           

5.3清單的增加操作

增加操作:

append():在清單末尾添加一個元素

extend():在清單末尾至少添加一個元素

insert():在清單的任意位置添加一個元素

切片:在清單的任意位置添加至少一個元素

eg1:

#向清單末尾添加一個元素
lst1=[10,23,45]
print('添加元素之前',lst1,id(lst1))
lst1.append(100)
print('添加元素之後',lst1,id(lst1))


#在末尾位置一次性添加多個元素
lst2=['hello','world']
lst1.extend(lst2)
print(lst1)


#在清單任意位置上添加一個元素
lst1.insert(55,99)
print(lst1)

#在任意位置添加多個元素
lst3=[True,False,'hello']
lst1[1:]=lst3    #:沒有指定位置直到末尾
print(lst1)

================================================》
添加元素之前 [10, 23, 45] 1586504758272
添加元素之後 [10, 23, 45, 100] 1586504758272
[10, 23, 45, 100, 'hello', 'world']
[10, 23, 45, 100, 'hello', 'world', 99]
[10, True, False, 'hello']
           

5.4清單的删除操作

**remove():**一次删除一個元素,重複元素删除第一個,元素不存在抛出ValueError

pop():删除一個指定索引位置上的元素,指定索引不存在提示IndexError,不指定索引,删除清單中最後一個元素

切片:一次至少删除一個元素

clear():清空清單

del:删除清單

lst=[10,20,30,40,50,60,40]
lst.remove(30)  #從清單移除元素30
print(lst)

#pop()根據索引移除元素
lst.pop(1)    #删除了元素20
print(lst)

lst.pop()   #不指定參數(索引),将删除清單中的最後一個元素
print(lst)

print('---切片操作-删除至少一個元素,将産生一個新的清單對象-----')
new_list=lst[1:3]
print('原清單',lst)
print('切片後的清單',new_list)

'''不産生新的清單對象,而是删除原清單中的内容'''
lst[1:3]=[]
print(lst)

'''清除清單中的所有元素'''
lst.clear()
print(lst)

'''del 語句将清單對象'''
del lst

========================================》
[10, 20, 40, 50, 60, 40]
[10, 40, 50, 60, 40]
[10, 40, 50, 60]
---切片操作-删除至少一個元素,将産生一個新的清單對象-----
原清單 [10, 40, 50, 60]
切片後的清單 [40, 50]
[10, 60]
[]
           

5.5清單的修改操作

為指定索引的元素賦予一個新值

為指定的切片賦予一個新值

eg1:把索引為2 的地方改為99

lst=[10,20,30,40]
#一次修改一個值
lst[2]=99
print(lst)

lst[1:3]=[300,400,500,600]
print(lst)
================》
[10, 20, 99, 40]
[10, 300, 400, 500, 600, 40]
           

5.6清單的排序操作

常見方式:

1.調用sort()方法,清單中所有元素按從小到大順序排序,可以指定reverse=True,進行降序排序。

2.調用内置函數sorted(),可以指定reverse=True,進行降序排序,原清單不發生改變。

eg1:排序操作

lst=[20,30,40,50,45,78,26]
print('排序前的清單',lst)
#排序,sort方法升序
lst.sort()
print('排序後的清單',lst,id(lst))

#通過指定關鍵字參數,将清單元素降序
lst.sort(reverse=True)   #降序
print(lst)
lst.sort(reverse=False)  #升序
print(lst)

#調用内置函數排序
print('-------sorted()排序,生成新清單---------')
lst1=[45,89,78,15,56]
print('原清單',lst1)
new_list=sorted(lst1)   #升序
print(lst1)
print(new_list)

#指定關鍵字參數,将清單元素降序排序
desc_list=sorted(lst1,reverse=True)  #降序
print(desc_list)

============================================》
排序前的清單 [20, 30, 40, 50, 45, 78, 26]
排序後的清單 [20, 26, 30, 40, 45, 50, 78] 3058413823296
[78, 50, 45, 40, 30, 26, 20]
[20, 26, 30, 40, 45, 50, 78]
-------sorted()排序,生成新清單---------
原清單 [45, 89, 78, 15, 56]
[45, 89, 78, 15, 56]
[15, 45, 56, 78, 89]
[89, 78, 56, 45, 15]
           

清單生成式:簡稱生成清單的公式

文法:由清單元素表達式、自定義變量、可疊代對象組成。清單元素表達式中包含自定義變量

[i*i for i in range(1,10)]
           

5.7總結

清單的建立:使用[],内置函數list(),清單生成式

清單的查詢:查詢元素索引、擷取單個元素、擷取多個元素、in/not in

清單增删改:

​ 增:append()、extend()、insert()、切片