04-python的列表操作

weixin_33816946發表於2017-07-09

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來實現一個簡單的迭代器



相關文章