刻意練習Python基礎 ——day 03:列表與元組(上)

17天 —— Python基礎刻意練習

Day 01——Task01:變量、運算符與數據類型
Day 02——Task02:條件與循環
Day 03——Task03:列表與元組(上)
Day 04——Task03:列表與元組(下)
Day 05——Task04:字符串與序列
Day 06——Task05:函數與Lambda表達式(上)
Day 07——Task05:函數與Lambda表達式(下)
Day 08——Task06:字典與集合
Day 09——Task07:文件與文件系統(上)
Day 10——Task07:文件與文件系統(下)
Day 11——Task08:異常處理
Day 12——Task09:else 與 with 語句
Day 13——Task10:類與對象(上)
Day 14——Task10:類與對象(下)
Day 15——Task11:魔法方法(上)
Day 16——Task11:魔法方法(下)
Day 17——Task12:模塊
    



列表與元組





  在Python中,若將int整型、float浮點型、bool布爾型和str字符串單個數據,則可以將這些數據都放在一個容器裏得到一個 「容器類型」序列,比如:列表(List)元組(Tuple)、字典(Dict)、集合(Set)。

  Python有6個序列的內置類型,序列都可以進行的操作包括索引切片檢查成員
  此外,Python已經內置確定序列的長度以及確定最大最小的元素的方法。

1.列表List

  • 列表是最常用的Python數據類型,它可以作爲一個方括號內的逗號分隔值出現。
  • 列表的數據項不需要具有相同類型
  • 創建一個列表,只要把逗號分隔的不同的數據項使用方括號括起來即可。如下所示:
list1 = ['Mive','-Vax', 5, 3];
list2 = [1, 2, 3, 4, 5 ];
list3 = ['Mive','-Vax', [3, 5]];

  與字符串的索引一樣,列表索引從0開始。列表可以進行截取、組合等。


 1.1訪問列表中的值

  使用下標索引來訪問列表中的值,同樣你也可以使用方括號的形式截取字符,如下所示:
在這裏插入圖片描述

list1 = ['Mive','-Vax', 5, 3]
sample = [1, 2, 3, 4, 5, 6, 7, 8, 9 ]
 
print ("list1[0]: ", list1[0])
print ("sample[3:5]: ", sample[3:5])
print ("sample[-5:-3]: ", sample[-5:-3])

# list1[0]:  Mive
# sample[3:5]:  [4, 5]
# sample[-5:-3]:  [5, 6]



 1.2向列表添加元素


  1.2.1通過 list.append(obj)方法

  append(obj) 在列表末尾添加新對象只接受一個參數,參數可以是任何數據類型,被追加的元素在 list 中保持着原結構類型。

list1 = ['Mive','-Vax', 5]
list1.append('3')
print ("更新後的列表 : ", list1)
# 更新後的列表 :  ['Mive', '-Vax', 5, '3']

  注意:append()方法與 + 連接操作符還是存在差異的。 + 連接操作符兩端的類型需要一致。

list1 = ['Mive','-Vax', 5]
list2 = 3
list1.append(list2)
print ("更新後的列表 : ", list1)
# 更新後的列表 :  ['Mive', '-Vax', 5, 3]

list1 = ['Mive','-Vax', 5]
list2 = 3
list1 += list2
print ("更新後的列表 : ", list1)
# TypeError: 'int' object is not iterable

  1.2.2通過list.extend(seq)方法

  extend(seq) 方法用於在列表末尾一次性追加另一個序列中的多個值(用新列表擴展原來的列表)。

list1 = ['Mive','-Vax']
list1.extend([5,'3'])
print ("更新後的列表 : ", list1)
# 更新後的列表 :  ['Mive', '-Vax', 5, '3']

  1.2.3通過list.insert(index, obj))方法

  insert(index, obj))方法用於將指定對象obj插入列表的指定位置index

list1 = ['Mive', 5, 3]
list1.insert(1, '-Vax')
print ("更新後的列表 : ", list1)
# 更新後的列表 :  ['Mive', '-Vax', 5, 3]




 1.3修改列表中的值

  直接通過下標索引來修改列表中的值

list1 = ['Mive', '-Vax'5, 3]
print ("列表:", list1)
list1[2] = 8
print ("更新後的列表:", list1)
# 列表: ['Mive', '-Vax', 5, 3]
# 更新後的列表: ['Mive', '-Vax', 8, 3]



 1.4刪除列表中的值


  1.4.1通過 list.remove(obj) 方法

  不需要知道參數的索引值,只需要知道參數的值既可完成刪除

list1 = ['Mive', '-Vax', 5, 3]
print ("列表:", list1)
list1.remove('Mive')
print ("更新後的列表:", list1)
# 列表: ['Mive', '-Vax', 5, 3]
# 更新後的列表: ['-Vax', 5, 3]

  注意:若刪除list中不存在的值,則會報錯。


  1.4.2通過 del 語句

  可以使用 del 語句來刪除列表的一個或多個元素

list1 = ['Mive', '-Vax', 5, 3]
del list1[1], list[2]
print (list1)
# ['Mive', 3]

  也可以使用 del 語句來刪除列表

list1 = ['Mive', '-Vax', 5, 3]
del list1
print (list1)
# NameError: name 'list1' is not defined

  1.4.3通過 list.pop([index=-1]) 語句

  因爲Python中的List是利用stack棧這種數據結構進行存儲的,所以可以使用pop彈棧彈出元素,故存在返回值

list1 = ['Mive', '-Vax', 5, 3]
num = list1.pop()
print (list1,num)
# ['Mive', '-Vax', 5] 3

list1 = ['Mive', '-Vax', 5, 3]
list1.pop(1)
print (list1)
# ['Mive', 5, 3]



 1.5列表分片與拼接


  1.5.1列表分片

  Python的列表截取與字符串操作類型爲list[start : stop : step]
  意爲索引下標從start開始到stop - 1步長爲step,複製出一個新的列表。

list1 = ['Mive', '-Vax', 5, 3,'Mive1', '-Vax1', 51, 31]
print(linst[1:5])		# ['-Vax', 5, 3, 'Mive1']
print(linst[1:])		# ['-Vax', 5, 3, 'Mive1', '-Vax1', 51, 31]
print(linst[:5])		# ['Mive', '-Vax', 5, 3, 'Mive1']
print(linst[:])			# ['Mive', '-Vax', 5, 3, 'Mive1', '-Vax1', 51, 31]
print(linst[1:7:2])		# ['-Vax', 3, '-Vax1']
print(linst[::-1])		#[31, 51, '-Vax1', 'Mive1', 3, 5, '-Vax', 'Mive']

  注意:若令step = -1,相當於將列表翻轉。


  1.5.2列表拼接

   列表拼接有兩種方式,用 ’ + ’ 連接操作符’ * ’ 重複操作符 ,前者首尾拼接,後者複製拼接。

list1 = ['Mive', '-Vax', 5, 3]
list2 = ['Mive1', '-Vax1', 51, 31]

print(list1 + list2)	# ['Mive', '-Vax', 5, 3, 'Mive1', '-Vax1', 51, 31]
print(list1 * 3)		# ['Mive', '-Vax', 5, 3, 'Mive', '-Vax', 5, 3, 'Mive', '-Vax', 5, 3]



  1.5.3嵌套列表

  使用嵌套列表即在列表裏創建其它列表,例如:

list1 = ['Mive', '-Vax', 5, 3]
list2 = ['Mive1', '-Vax1', 51, 31]
list3 = [list1, list2]
print(list3)			# [['Mive', '-Vax', 5, 3], ['Mive1', '-Vax1', 51, 31]]
print(list3 [1])		# ['Mive1', '-Vax1', 51, 31]
print(list3 [0][1])		# -Vax




 1.6列表的常用操作符


  1.6.1比較操作符

  即>>=<<===!=

list0 = [5, 3]
list1 = [5, 31]
list2 = [51, 3]
print(list0 > list2)		# False
print(list0 > list1)		# False
print(list1 > list2)		# False

  1.6.2邏輯操作符

  即andornot

list0 = [5, 3]
list1 = [5, 31]
list2 = [51, 3]
print(list0 > list2 and list0 > list1)		# False
print(list0 > list2 or list0 > list1)		# False
print(not(list1 > list2))					# True

  1.6.3成員關係操作符

  即innot in

list1 = ['Mive', '-Vax', 5, 3]
print(5 in list1)			# True
print(51 not in list1)		# True



 1.7列表的一些其他函數&方法


  1.7.1列表函數


   1.7.1.1 len(list) 函數

   len(list) 函數返回列表元素個數。

list1 = ['Mive', '-Vax', 5, 3]
print (len(list1))				# 4
list2=list(range(5)) 			
print (list2, len(list2))		# [0, 1, 2, 3, 4] 5

   1.7.1.2 max(list) 函數

   max(list) 函數返回列表元素最大值

list1 = ['Mive', '-Vax', '5', '3']
list2=list(range(5)) 
print ("list1 最大元素值 : ", max(list1))
print ("list2 最大元素值 : ", max(list2))
# list1 最大元素值 :  Mive
# list2 最大元素值 :  4

   1.7.1.3 min(list) 函數

   min(list) 函數返回列表元素最小值

list1 = ['Mive', '-Vax', '5', '3']
list2=list(range(5)) 
print ("list1 最小元素值 : ", min(list1))
print ("list2 最小元素值 : ", min(list2))
# list1 最小元素值 :  -Vax
# list2 最小元素值 :  0

   1.7.1.4 list(seq)函數

   將元組轉換爲列表

tuple1 = ('Mive', '-Vax', '5', '3')
print (tuple1, type(tuple1))
list1=list(tuple1) 
print (list1, type(list1))

# ('Mive', '-Vax', '5', '3') <class 'tuple'>
# ['Mive', '-Vax', '5', '3'] <class 'list'>




  1.7.2列表的一些其他方法


   1.7.2.1 count(obj)方法

   count(obj)方法用於統計某個元素在列表中出現的次數。

list1 = ['Mive', '-Vax', '5', 3]
list1 *= 8
print ("3 元素個數 : ", list1.count(3))
# 3 元素個數 :  8

   1.7.2.2 reverse()方法

  reverse() 方法用於反向列表中元素。

list1 = ['Mive', '-Vax', '5', 3]
list1.reverse()
print (list1)
# [3, '5', '-Vax', 'Mive']
print (list1[::-1])
# ['Mive', '-Vax', '5', 3]

   1.7.2.3 sort()方法

  sort() 函數用於對原列表進行排序,如果指定參數,則使用比較函數指定的比較函數。
  list.sort( key=None, reverse=False)

  • key — 主要是用來進行比較的元素,只有一個參數,具體的函數的參數就是取自於可迭代對象中,指定可迭代對象中的一個元素來進行排序。
  • reverse — 排序規則,reverse = True 降序, reverse = False 升序(默認)。
list1 = ['b', 'a', 'd', 'c', 'e']
list1.sort()
print ( '升序輸出:', list1 )
list1.sort(reverse=True)
print ( '降序輸出:', list1 )
# 升序輸出: ['a', 'b', 'c', 'd', 'e']
# 降序輸出: ['e', 'd', 'c', 'b', 'a']
def takeSecond(list1):
    return list1[1]
list1 = [[0,5],[2,2],[7,3],[5,4],[1,8]]
list1.sort(key=takeSecond)
print('排序列表:', list1)
# 排序列表: [[2, 2], [7, 3], [5, 4], [0, 5], [1, 8]]

   1.7.2.4 clear()方法

  clear() 方法用於清空列表,類似於 del list[:]

list1 = ['Mive', '-Vax', '5', 3]
list1.clear()
print("列表清空後 : " , list1)
# 列表清空後 : []

   1.7.2.5 copy()方法

  copy() 方法用於複製列表,類似於 list[:]

list1 = ['Mive', '-Vax', '5', 3]
list2 = list1.copy()
print ("list2 列表: ", list2)
# list2 列表:  ['Mive', '-Vax', '5', 3]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章