1. 程式人生 > >資料型別之list/tuple

資料型別之list/tuple

1.list(列表) 定義list: a_list = [1,2,3] #表現形式方括號 print(a_list)

		list的長度:
			a_list = [1,2,3]   
			print(len(a_list))  #len
		
		list索引:
			a_list = [1,2,3]   
			print(a_list[0])   #索引從0開始,超出索引範圍報錯
		
		list追加元素:
			a_list = [1,2,3]  
			a_list.append(23)
			print(a_list)    #可追加任何型別
			列表合併:
							a_list = [1,2,3]
							b_list = [4,5,6]
							a_list.extend(b_list)
							print(a_list)
		
		指定位置插入元素:
				a_list = [1,2,3]
				a_list.insert(1,3)    #第一個引數元素索引,第二個為插入的值
				print(a_list)
		
		list彈出末尾的值:
				a_list = [1,2,3]
				a_list.pop()
				print(a_list)   #[1,2
		
		彈出指定位置的元素,刪除指定的元素:
				a_list = [1,2,3]
				a_list.pop(1)
				print(a_list)   #[1,3]
				a_list.remove(2)
				print(a_list)    #[1,3]   #索引從1
				a_list.clear()  #刪除所有元素
				
		替換列表元素:
				a_list = [1,2,3]
				a_list[0]=12
				print(a_list)  #[12,2,3]
		
		刪除元素;
			a_list = [1,2,3,1,2,3,5,6,9,4,5,6,]
			a_list.remove(2)
			print(a_list)    #[1, 3, 1, 2, 3, 5, 6, 9, 4, 5, 6]
			#注意上面並沒有全部刪除2這個元素。怎麼辦?請看下面
			第一種方法可以用迴圈遍歷來刪除:
					for i in a_list[:]:
						if i == 2:
						    a_list.remove(2)
					print(a_list)
			第二種方法可以用count方法來統計元素總數,然後來刪除:
					a_list = [1,2,3,1,2,3,5,6,9,4,5,6,]
					num = a_list.count(2)
					for i in range(num):
						  a_list.remove(2)
						   print(a_list)
		
		列表推導式:
			快速生成列表
			print([i for i in range(1,10)])
		
		列表排序:
			a_list = [1,2,3,4,5,6]
			a_list.sort(reverse=False)    #正向
			a_list.sort(reverse=True)    #反向
			最大值:print(max(a_list))
			最小值:print(min(a_list))
		
		列表拷貝:
				深拷貝:
							import copy
							a=[1,2,3,['a','e',[2,3]]]
							b=a
							d=copy.deepcopy(b)
							a[0]=300
							print(a)
							print(d)  
							#深拷貝是全部拷貝  最外層和最內層
				淺拷貝:
							# l1 = [1,2,3,[11,22,33]]
						   # l2 = l1.copy()
							# print(l2) #[1,2,3,[11,22,33]]
							# l2[3][2]='aaa'
							# print(l1) #[1, 2, 3, [11, 22, 'aaa']]
							# print(l2) #[1, 2, 3, [11, 22, 'aaa']]
							# l1[0]= 0
							# print(l1) #[0, 2, 3, [11, 22, 'aaa']]
							# print(l2) #[1, 2, 3, [11, 22, 'aaa']]
							# print(id(l1)==id(l2)) #Flase         #淺拷貝是拷貝最內層
				list切片:
							b_list = [1,2,3,4,6,5,4,8,6,7]
							print(b_list[0:2])     #1,2
							print(b_list[-2:])     #6,7

2.tuple(元祖) tuple表現形式(),可理解為不可改變的list: 定義tuple: a_tuple = (1,2,3,4,5,6) print(a_tuple)

			tuple索引:
						a_tuple = (1,2,3,4,5,6)
						print(a_tuple[-1])   #6
			
			tuple陷阱:
						a_tuple = (1)
						print(type(a_tuple))   #<class 'int'>
						注意:單個元素的元素要加逗號
			tuple的不可改變性:
						a_tuple = (1,2,3,4,5,6)
						a_tuple[0] = 23   #會報錯
						print(a_tuple)  
						tuple沒有list的append, insert, pop方法
			tuple巢狀:
						a_tuple = (1,2,3,4,5,6,[1,2,3,4])
						print(a_tuple)
						a_tuple[6][0] = 0
						print(a_tuple)     #(1, 2, 3, 4, 5, 6, [0, 2, 3, 4])    list可修改
			
			1.list與tuple主要區別:  (邏輯,記憶體比較)
			#     相同點:都是序列,容器裡元素是有順序的,有index屬性,都是可以迭代的
			#    不同點: 
			#  list容器中元素可以改變,,tuple容器中元素是不可以改變的

			tuple切片:
							a_tuple = (1,2,3)
							print(a_tuple[-3:-1])  #1,2
			mix_list = [[1, 2, 3], (4, 5), ['tom', 'ben']]
			mix_list.append((6, 7))    #新增
			print(mix_list.pop())    #彈出最後一個元素
			print(mix_list.pop(0))    #彈出第一個元素

‘’‘ 作業: 1. 將列表[1,3,[‘hello’,‘eric’,‘ben’],‘good’]轉換為元組 2. 如何獲取 變數 list_a=[1,3,[‘hello’,‘eric’,‘ben’],‘good’]中’hello’這個字串 list_a[m][n] m=? n=? 3. list_1 = [1,1,2,3,4,3,2,1],獲取數字2的所有索引值,刪除該列表中所有的1。 4. 採用列表推導式快速產生一副撲克牌。如下 花色為 * @ # $, K1為大王, K2為小王 [’*A’,‘K2’,’@3’,’@4’]

’‘’