python中列表的使用最多, 常用的方法有:
append(value)
extend(L) 新增指定列表的所有元素
insert(index, value) 插入
remove(value)
pop(index) 不指定刪除最後一個,
clear() 清空
count(value) 統計有多少個
sort() 排序
reverse() 到序
copy() 潛複製
對列表遍歷的3種方式;
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 if __name__ == '__main__': 4 list = ['html', 'js', 'css', 'python'] 5 6 # 方法1 7 print '遍歷列表方法1:' 8 for i in list: 9 print ("序號:%s 值:%s" % (list.index(i) + 1, i)) 10 11 print '\n遍歷列表方法2:' 12 # 方法2 13 for i in range(len(list)): 14 print ("序號:%s 值:%s" % (i + 1, list[i])) 15 16 # 方法3 17 print '\n遍歷列表方法3:' 18 for i, val in enumerate(list): 19 print ("序號:%s 值:%s" % (i + 1, val)) 20 21 # 方法3 22 print '\n遍歷列表方法3 (設定遍歷開始初始位置,只改變了起始序號):' 23 for i, val in enumerate(list, 2): 24 print ("序號:%s 值:%s" % (i + 1, val))
其他的:
1, 列表推導式
列表推到式, 從序列簡單的建立列表
將操作應用於序列的每個元素, 將其結果作為新的列表元素
需要用 [], 元組用()
每個列表推到是都在for之後建立一個表示式, 然後有0-多個 for或if子句, 返回結果
是一個根據表示式從背後的for和if上下文環境中生成的列表, 如果希望推到出一個元組, 必須用口號
# ×3 獲取一個新的列表 vec = [2, 4, 6] new_vec = [3 * x for x in vec] print(new_vec) # 獲取一個map dict = [(x, x**2) for x in vec] print(dict) # 對序列中元素租個呼叫 fruits = ['banana', 'apple', 'oragin'] new_fruits = [fruit.upper() for fruit in fruits] print(new_fruits) # 使用if if_vec = [3 * x for x in vec if x > 3] print(if_vec) # 2個列表混搭的 vec2 = [4, 6, -1] lista = [x * y for x in vec for y in vec2] listb = [vec[i] * vec2[i] for i in range(len(vec))] print(lista) print(listb)
字典推導
# 字典 推導 new_dict = {x + 10: x**2 + 10 for x in range(10)} print(new_dict)
2, 巢狀列表的轉換
比如, 我想把一個 3 * 4 的列表轉換為 4 * 3 的列表
matrix = [ [1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12] ] new_matrix = [[row[i] for row in matrix] for i in range(4)] print(new_matrix) # 上面的相當於 matrix_1 = [] for i in range(4): matrix_1.append([row[i] for row in matrix]) print(matrix_1) # 獲取進一步改寫 matrix_2 = [] for i in range(4): ineer = [] for row in matrix: ineer.append(row[i]) print(row[i], end=', ') print('---', row) print(matrix_2) for row in matrix: print(row)
3, 使用enumerate進行遍歷
# 字典 推導 new_dict = {x + 10: x**2 + 10 for x in range(10)} print(new_dict) # 字典的遍歷 for k, v in new_dict.items(): print(k, v) # 返回索引的, dict返回key for i, v in enumerate(new_dict): print(i, v) # 遍歷2個貨更多的序列, 使用 zip(), 去最短的序列 questions = ['name', 'quest', 'favorite'] answers = ['lancelot', 'the', 'blue', 'abc'] for q, a in zip(questions, answers): print(q, a) # 反向遍歷集合 for q in reversed(questions): print(q)
enumerate返回的是一個迭代器物件, 裡面包含一個yield, 可以返回函式的執行狀態
我們也可以使用yield來實現一個簡單的迭代器