列表
複製方式:
- 切片法
- list()轉換函式
- 用*複製
- 列表copy()函式
list_2 = list_1[:]
list_2 = list(list_1)
list_2 = list_1*1
list_2 = copy.copy(list_1)
list_2 = copy.deepcopy(list_1)
複製程式碼
區別:當列表中元素為列表時,
deepcopy():完全複製,深拷貝內外層列表
其他:深拷貝外層列表,引用內層(與原列表指向同一子列,子列的改變會相互影響)
當字典中有列表時,用copy()和deepcopy()複製字典類似
方法
函式 | 作用 |
---|---|
string.spilit(separator) | 分割字串組成列表 |
string=separator.join(list) | 列表轉換為字串 |
函式 | 作用 |
---|---|
list.append(element) | 增加元素至表尾 |
list.extern(list_1) | 合併列表 |
list += list_1 | 合併列表 |
函式 | 作用 |
---|---|
del 語句 del list[offset] | 刪除指定位置元素 |
list.remove(element) | 刪除指定值元素 |
list.pop(offset) | 獲取並刪除指定位置元素 |
函式 | 作用 |
---|---|
soerted_list = soerted(list) | 建立副本,重排列表元素,但不改變原列表 |
list.sort() | 呼叫後改變原列表 |
list.sort(reverse = true) | 降序 |
list.reverse() | 反向列表元素 |
其他
- 列表可巢狀:引用:雙層索引list[][]
- list.spilit(separator) 分割字串包含連續分隔符,返回空串
- pop() 不指定偏移量,預設-1
元祖
- 元祖解包,順序賦值
- 直接交換變數
字典
- 鍵:不可變
可變 | 不可變 |
---|---|
布林型 字串 整型 浮點型 | 列表 字典 |
- update()合併字典
- dict.clear()刪除所有元素
- list(dict.keys()) 獲取所有鍵並轉換為列表
- 類似:values() items():list()轉換
- 字典作為引數傳入set()時,只有鍵會被引用
集合
- set():空集
- {}: 空字典
- a & b 等價 a.intersection(b)
- a | b 等價 a.union(b)
- a ^ b 等價 a.symmetric_difference(b)
- a <= b 等價 a.issubset(b)
- a >= b 等價 a.issuperset(b)
迴圈
-
比較:if、elif、else
-
while 迴圈
continue,break跳出
迴圈外使用else:迴圈中沒有呼叫break後的檢查
position = 0
while position < len(numbers):
number = numbers[position]
if number % 2 == 0:
print('Found even number',number)
break
position += 1
else:
print('No even number found')
複製程式碼
- for 迭代
對字典鍵進行迭代:
for key in dict/dict.keys():
print(key)
複製程式碼
對字典值進行迭代
for value in dict.values():
print(value)
複製程式碼
以元組形式放回鍵值對
for item in accusation.items():
複製程式碼
- zip() 並行迭代
days = ['monday','Tuesday','Wednesday']
fruits = ['banana','orange','peach']
drinks = ['coffe','tea','beer']
desserts = ['tiramisu','ice cream','pie','pudding']
for day,fruit,drink,dessert in zip(days,fruits,drinks,desserts):
print(day,":drink",drink,"-eat",fruit,"-enjoy",dessert)
複製程式碼
- zip()配對兩個元組,返回一個整合在一起的可迭代變數,配合list()和dict()轉換成列表和字典
english = 'Monday','Tuesday','Wednesday'
french = 'Lundi','Mardi','Mercredi'
print(** list **(zip(english,french))) #配合list()轉換成列表
print(** dict **(zip(english,french))) #配合dict()轉換成字典
複製程式碼
-
range生成自然數序列
反向建立序列
>>> for x in range(2,-1,-1):
print(x)
2
1
0
複製程式碼
- 推導式
列表推導式
number_list = [expression for item in iterable if condition]
>>> number_list = [number-1 for number in range(1,6) if number% 2 == 1]
>>> number_list
[0,2,4]
複製程式碼
字典推導式
dict = {key_expression : value_expression for expression in iterable}
>>> word = 'lettter'
>>> letter_counts = {letter: word.count(letter) for letter in set(word)} #用set(word)迭代
>>> letter_counts
{'t':2,'l':1,'e':2,'r':1,'s':1}
複製程式碼
集合推導式
>>> a_set = {number for number in range(1,6) if number % 3 == 1}
>>> a set
{1,4}
複製程式碼
生成器推導式
>>> number_thing = (number for number in range(1,6))
>>> for number in number_thing:
print(number)
1
2
3
4
5
#對生成器推導式呼叫list()函式
>>> number_list = list(number_thing)
>>> number_list
[1,2,3,4,5]
複製程式碼
建立生成器:
1)生成器推導式
2)使用生成器函式