Python列表深度学习-1

'''list常用函数'''
from typing import List

a = [66.25,3333,333,1,123456]   #定义变量,以列表的形式
print(a.count(333),a.count(66.25),a.count('n'))     #count的作用为显示表中相同的值的个数
a.insert(3,-1)  #insert的用处是在表中的第3个值的后面插入一个值为-1
a.append(333)   #append的用处是在表的最后面插入一个新值
a
a.index(333)    #返回表中值为333的元素个数,如果值在表中不存在,执行之后报错
a.remove(333)   #删除列表中值为333的第一个元素,如果值不存在则会报错
a.reverse()     #反转列表中的所有元素顺序
a.sort()        #对列表中的元素进行排序,从小到大
a.pop()         #删除列表中最后一个元素,并且打印出它的值
a.pop(0)        #从最前方开始删除元素,并且打印
b = [123,456,789,1011]
a.extend(b)      #一次性在列表后方加入另外一个列表

'''列表推导算式'''
vec = [3,6,9]
[3*x for x in vec]  #使用for将列表内的各个元素乘3,这里的x相当于改变之前的vec
[[x, x ** 2] for x in vec]  #对vec进行多次推算,这里进行了两次,在内部的[]中,完成后把所有的推算结果写道vec中

fresh = ['banana','apply','fruit']
[i.strip() for i in fresh]  #将fresh的值定义到i中

[3*i for i in vec if i > 3]     #对vec进行推算,if定义只推算列表中原值大于3的元素
[3*i for i in vec if i < 4]

[(x,x**2) for x in vec]   #创建元组时可以不使用括号,但是在内部进行多次推算必须加上()不然报错,或者无结果

# 使用嵌套的方式使两个表进行推算
list1=[4,5,6,7]
list2=[6,5,-4,7]
[x*y for x in list1 for y in list2]     #与下面的循环效果一样
listall = [
    x * y  # 推算式
    for x in list1  # 当本循环执行完成,以列表的形式打印
    for y in list2  # 当x第一次循环,输出为[4x6,4x5,4x-4,4x7]的结果
]
print(listall)
list3=[4,5,6]
#range(len())一个比较复杂的语法
[
    list1[i]*list2[i]   #推算时引用i的值,比如list1和2本来时4个元素,但是他们使用了list3的元素数,所以推算时只有它们前面三个元素相乘
    for i in range(len(list3))  #可以理解为摘取list1的元素数,赋值到i中
]
#配合round使用
[
    str(round(355/113,i))   #round函数可以定义小数点后的数位,比如为1时小数点后显示一位,剩余的数四舍五入
    for i in range(1,6)     #定义i值为1-5,每次循环+1
]

'''嵌套列表推导式'''
#嵌套列表创建格式
mat = [
    [1,2,3],    #创建好后直接打印的话,内容还是一行,看不出行和列的关系
    [4,5,6],
    [7,8,9],
]
print(mat)
#交换行和列,使在一列中的元素,输出到一个元组中
print([
    [row[i] for row in mat]     #定义row为mat的元素,然后通过定义好的i位置变量获取row中位置在一列的元素,输出到一个元组中
    for i in [0,1,2]    #定义i为表中的位置变量
])
#以上效果也可以使用zip函数实现
list(zip(*mat))     #zip函数将mat中的三个元组拆分开,将每个元组中位置对应的元素打包到一个新的元组中

你可能感兴趣的:(python,开发语言)