• Python基础(一)基本类型


    一、Number数字

    1.1 注意事项

    Python支持intfloatboolcomplex类型。

    complex是复数类型a+bj(或complex(a,b)),a表示实部,b表示虚部,a b本身是float类型。

    Python使用变量时,无需声明变量。

    a=3 # 自动声明为int
    b=3.4 # 自动声明为float
    a=3/4 # a的数据类型从int改成了float
    
    • 1
    • 2
    • 3

    Python除法/总是返回一个浮点数,如果你想只返回整数部分,请使用//

    7//2 # 返回3
    7.0//2 # 返回3.0
    
    • 1
    • 2

    Python支持幂运算

    5**2 # 5^2
    
    • 1

    Tips:在交互模式,和matlab一样的ans用下划线代替_

    1.2 数学函数
    内置函数含义
    abs(x)绝对值
    max(x1,x2,…xn)最大值
    min(x1,x2,…xn)最小值
    round(x,[n=0])四舍五入小数点n位
    math扩展含义
    ceil(x)不小于x的最小整数
    floor(x)不大于x的最小整数
    fabs(x)绝对值
    log(x[, base=e])base为底的对数
    log2(x)2为底的x对数
    log10(x)10为底的x对数
    sqrt(x)平方根
    (小数,整数)=modf(x)整数和小数部分
    acos(x)反余弦
    asin(x)反正弦
    atan(x)反正切
    atan2(y,x)反正切
    cos(x)余弦
    sin(x)正弦
    tan(x)正切
    degrees(x)弧度转角度
    radians(x)角度转弧度
    pi圆周率
    e自然数e

    1

    math库中还有其他的函数,需要时可以查阅:https://docs.python.org/3/library/math.html

    random扩展含义
    choice(seq)从序列中随机选择一个元素
    randrang([start] stop [,step=1])生成的range中选择一个元素
    random()随机生成一个实数,范围[0,1)
    seed([x])随机种子
    shuffle(lst)打乱序列
    uniform(x,y)[x,y]随机实数

    二、字符串

    2.1 注意事项

    Python有字符串型但是没有字符型。定义也和大多数语言一样:

    var1 = "Hello"
    var2 = 'Hello'
    var3 = """
    这是一个可以
    换行的
    字符串
    """
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    上面有三种类型表示字符串内容,分别是单引号、双引号和三引号。如果没有转义单引号双引号都可以,如果有双引号特殊字符,那你用单引号可以不用多双引号进行转义,同理,如果你用单引号,双引号就无需转义[1]。

    2.2 运算
    操作符含义
    +连接符号左右字符串
    *重复左字符串
    [n]从0开始数第n个
    [a:b]区间[a,b)的所有有序字符串
    in左字符是真的在右字符串里面吗?
    not in左字符是真的不在右字符串里面吗?

    重点来看中括号的切片操作:对于字符串,我们用中括号就可以选取:
    在这里插入图片描述
    和C语言一样下标从0开始。你可以选择某个元素:

    str[2] # 结果是n
    str[-5] # 结果是u
    
    • 1
    • 2

    也可以按范围选取:

    str[:] # 全部
    str[0:5] # [0,5)部分即Runnoo
    str[0:] # 从零开始到最后一个元素下表(也就是6)
    str[:6] # [0,5]所有字符
    
    • 1
    • 2
    • 3
    • 4
    2.3 格式化字符串

    格式如下:

    "   %格式化符号   %格式化符号" % (数据,数据)
    
    • 1

    看个具体的例子:

    name="Fred"
    "Hello %s!"%(name)
    
    • 1
    • 2

    复杂一点的有:

    name="Fred"
    age=2
    "Hello %s I am %d year old !"%(name,age)
    
    • 1
    • 2
    • 3

    格式化符号与C语言一致。

    2.4 list成员方法
    方法含义
    capitalize首字母大写
    center(width)长度width居中字符串
    count(str,beg=0,end=len(string))str在范围内出现的次数
    endwith(obj,beg=0,end=len(string))检查字符串是否以obj结尾
    expandtabs(tabsize=8)字符串tab符号转为空格
    find(str,beg=0,end=len(string))str是否在指定范围内,如果在返回引索,否则-1
    format()%[(name)][flags][width].[precision]typecode
    index(str,beg=0,end=len(string))str是否在指定范围内,如果在返回引索,否则返回一异常
    isalnum()是否为字母后者数字
    isalpha()是否为字母或者中文
    isdigit()是否为数字
    isupper是否全部大写
    islower()字母是否都为小写
    isnumeric()是否只包含数字
    isspace()是否为空格
    istitle()是否为标题化的
    s1.join(seq)以s1作为分隔的序列合并成一个
    #!/usr/bin/python3
    
    s1 = "-"
    s2 = ""
    seq = ("r", "u", "n", "o", "o", "b") # 字符串序列
    print (s1.join( seq ))
    print (s2.join( seq ))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    三、序列(List)

    序列里面,你可以随意放置任何你想要的类型,Python会帮你处理好这些数据的存放。

    3.1 索引(Indexing)

    在序列中每个元素都有编号,索引(Indexing),从下标1开始,可以是正数也可以是负数。0表示第一个,-1表示最后一个。

    a=[1,2,3,4,5,6,7,8] # 如果存放同一个类型,那就和C里面的数组没有什么不一样了
    b=['zhangsan',1223,'Beijing'] # 如果存放不同类型,这就是C/C++没有的了(外部库除外)
    
    • 1
    • 2
    3.2 切片(Slicing)

    切片的意思是把序列的一部分“切”出来。最一般的形式就是:

    a=[5,4,46,42,45,62,27,8] 
    a[0:2]                  #下标0-2(不含右边)的元素组成的序列
    a[-3:-1]                #倒数第三个元素到最后一个
    a[-3:]                  #直接省略了-1,默认到最后一个元素
    a[:]                    #整个序列,所以为啥我不直接用a?不是更加方便
    a[0:-1]                 #下标从0到倒数第一个-1小标, 但是a[-1:0]却没有这样的用法,
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    一个不怎么常用的操作,就是固定步长抽取序列中的元素:

    a[0:-1:1]               #从第一个开始,每隔一个抽取一个元素组成序列
    a[8:0:-1]               #从第八个元素开始(不含),从左往右开始,此时步长正负等于方向
    
    • 1
    • 2
    3.3 序列相加、相乘

    Python通过重载加号实现两个元素的拼接,星号后的数字代表重复多少次。

    3.4 None 空列表 和初始化

    表示一个什么都没有的值None,一个长度为0的列表a=[]

    3.5 in 是否存在
    a=[1,2,3,4,5,6,7,8]
    print(1 in a) #True
    
    • 1
    • 2
    3.6 min max len

    最大、最小和长度都是内置的

    3.7 list类
    list('Hello') #返回元素分别是H e l l o的序列
    
    • 1
    3.7 切片赋值、等效删除、等效插入、方法删除
    a=[1,2,3,4,5,6,7,8]
    a[2]=4          # 将第三个元素改成了4
    a[2:3]=[99,88]  # 第3、4个元素变成了99 88
    a[2:3]=[]       # 等效删除,赋值为空不就行了
    a[2:3]=[2,3,99] # 偷偷加了一个99进去
    
    • 1
    • 2
    • 3
    • 4
    • 5
    3.8 切片方法

    此时,list是一个类,调用方法的符号为.

    方法名称含义
    append添加到末尾
    clear清除所有元素
    copy深拷贝
    count(ele)统计ele出现了多少次
    extend扩展序列
    index(ele)返回某个元素的第一次出现的下标
    insert(a,b,c,d)插入一些元素,注意元素可以不同类型
    pop弹出
    remove删除某个元素
    reverse反序
    sort排序
    a=[1,2,3]
    b=a
    b[1]=4
    >>>a
    [1,4,3]  # 一般的赋值其实是深拷贝,拷贝的是指针,这一点要注意
    
    • 1
    • 2
    • 3
    • 4
    • 5

    注意区分+拼接

    a=[1,2,3]
    b=[4,5,6]
    a+b # 
    
    • 1
    • 2
    • 3

    这个比较实用,C++可要进行遍历,写一堆东西

    a=[1,2,3,4,5,6,7,8]
    print(a.index(8)) # 打印7
    
    • 1
    • 2

    注意sort不会改变原来序列

    a=[3,4,1,7]
    b=a.sort() # 不行,b和a都指向同一个区域,排序会乱掉
    
    • 1
    • 2
    d=[3,3,4,5,5,6,8,7,8,99]
    
    gt4=[ele for ele in d if ele>4]
    
    ## 创建
    a=[3,4,5,6,7]        # 纯数字
    b=['a','b',5,8,'ii'] # 字符和数字混合
    c=[a,b,'ddd']        # 嵌套
    aa=d[2:5]
    aa=[887,888,889]
    
    ## 切片是针对序列型对象的一种高级引索的方法,普通的引索只能给出一个对应元素
    ## 切片是利用精湛的刀工选出自己想要的部分并将其拼在一起
    ## ref:https://blog.csdn.net/Zombie_QP/article/details/125063501
    ## 基本语法 序列对象[起点:终点:步长],注意是左闭右开,步长默认为1
    ## 其中大多数东西都可以省略,如
    ## d[::] 省略起点终点和步长 d[:] 起点终点步长和冒号,你可以只给起点、终点和步长
    ## 你可以连续切片,虽然感觉没有什么用 a[0:8][2:5][-1]
    ## 负数表示倒数第几个
    ## 切片之后操作的是原序列本身,如果不想这么做,可以拷贝到另一个序列中
    ## 泛型在list上的应用
    ## list = [i for i in range(5) if i>3]
    ## list也有很多内置的方法
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    [1] https://www.zhihu.com/question/59337505
    [2] https://www.runoob.com/python3/python3-string.html

  • 相关阅读:
    git的介绍,安装及配置
    HTML学习-----HTML开发代码构成
    Lua-Lua虚拟机2
    读《Segment Anything in Defect Detection》
    Vue 官方文档2.x教程学习笔记 1 基础 1.6 Class 与 Style 绑定 1.6.2 绑定内联样式
    【软件工程_UML—StartUML作图工具】startUML怎么画interface接口
    【Unity入门】鼠标输入和键盘输入
    Dubbo笔记
    计算机网络-网络层详细讲解
    时间序列问题案例分析Kaggle M5 Forecasting
  • 原文地址:https://blog.csdn.net/weixin_39258979/article/details/123570221