首页 > 代码库 > 04-python的列表操作

04-python的列表操作

python中列表的使用最多, 常用的方法有: 

append(value)
extend(L)   添加指定列表的所有元素
insert(index, value)    插入
remove(value)
pop(index)        不指定删除最后一个,
clear()         清空
count(value)    统计有多少个
sort()          排序
reverse()       到序
copy()          潜复制

其他的: 

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来实现一个简单的迭代器



04-python的列表操作