• PHP工程师学Python数据类型


    一、背景

    继上篇文章比较了PHP与Python语法之后,这周又学习了Python数据类型,准备从通过这篇文章给自己进行一些总结,也给其他读者一些参考。

    二、内容概要

    1. 字符串(str)
    2. 列表(list)
    3. 元组(tup)
    4. 字典(dict)
    5. 数据操作

    三、字符串(str)

    Python中字符串操作基本和PHP类似,下面介绍一下Python中字符串的常规操作方法

    3.1 索引下标取值

    在PHP中可以通过索引下标的方式获取到字符串中的某一个字符,在Python中也同样可以获取到,如下代码所示

    #定义字符串
    testStr = 'tangqingsong'
    #通过索引下标获取字符
    print(testStr[1])
    
    #打印结果  a
    

    3.2 切片

    在Python中有一个非常好用的功能叫做切片,比如当你想获取字符串中第n个字符到第m个字符中的区间字符,使用Python的切片实现非常简单,如下代码所示

    #定义字符串
    testStr = 'tangqingsong'
    #通过索引下标获取字符
    print(testStr[0:4])
    
    #打印结果  tang
    

    3.3 循环

    在Python中for不仅仅可以循环类似于PHP中的数组,还可以循环字符串,如下代码所示

    testStr = 'tangqingsong'
    
    for value in testStr[0:4]:
        print(value)
    
    #打印结果  tang
    

    3.4 字母大小写转换

    在Python中实现字母大小写转换和PHP的写法稍有不同,Python中操作有点类似于PHP操作对象的感觉,如下代码所示

    #定义字符串
    testStr = 'tQs'
    #大写转换
    aStr = testStr.upper()
    #小写转换
    bStr = testStr.lower()
    
    print(aStr,bStr)
    
    #打印结果   TQS tqs
    

    3.4 分割和合并

    接着我们再来看一下怎么把字符串切割与合并,如下代码所示

    s = 'tang|qing|song'
    l = s.split('|')
    
    print(l)
    #打印结果 ['tang', 'qing', 'song']
    
    s2 = '|'.join(['tang', 'qing', 'song'])
    print(s2)
    #打印结果 tang|qing|song
    

    3.5 字符串首尾过滤

    在PHP中字符串首尾过滤通常使用trim()函数过滤,而Python中字符串首尾过滤的语法有点类似于PHP操作对象的方式,代码如下所示

    # 去掉边界上的内容 strip
    s1 = '   tang    qing   song   '
    
    print(s1.strip())
    #打印结果 ‘tang qing song’
    

    如果你想指定删除某一个字符,代码如下所示

    s2 = '<汤青松>'
    print(s2.strip('>'))
    
    #打印结果 '<汤青松'
    

    四、列表(list)

    在Python中有一种叫做list的数据类型,在PHP中我们通常称之为索引数组

    4.1 数据定义

    定义list数据方式如下代码所示

    #定义一个list数据
    lst = ['张三','李四','王五','马六','田七']
    

    取数据方式和PHP基本一致,比如想获取lst里面的李四,可以这样获取

    $name = lst[1]
    

    4.2 切片

    除了正向取数据还可以反着顺序取数据,比如你要获取马六,你可以这样写

    $name = lst[-2]
    

    在Python中有一种获取数据非常简便的方法,叫做切片,比如你想获取lst中的李四到马六区间的数据,在PHP中你得用array_slice函数去截取,但在Python则非常方便,如下代码所示

    print(lst[1:4])
    
    # 打印结果 ['李四','王五','马六']
    

    如果你想隔一个数据取一个数据,切片还支持设置步长,步长默认为1,也就是说连续取数据,当你设置步长后,会按照指定的步长,如下代码所示

    print(lst[1:4:2])
    
    # 打印结果 ['李四','马六']
    

    同样切片也支持反着取数据,比如你想获取田七到王五区间的数据,参考代码如下

    print(lst[-1:-3:-1])
    
    # 打印结果 ['田七','马六','王五']
    

    4.3 修改数据

    在Python中如果你想向一个list数据中追加一个数据可以使用append方法向末尾增加,如下代码所示

    lst = lst.append('王八')
    

    也可以使用pop方法弹出最末尾一个数据,如下代码所示

    value = lst.pop()
    

    如果你想吧数据清空,也可以使用clear方法,当然你也可以直接将值重新赋值一个空list,如下代码所示

    lst.clear()
    #或者
    lst = []
    

    4.4 值的引用

    在Python中需要注意一种引用内存地址的特殊情况,如下代码所示

    # 定义两个变量
    aList = ['张三', '李四', '王五']
    bList = []
    
    # 在bList中追加aList,此时bList为二维list
    bList.append(aList)
    
    #修改aList变量里面的值
    aList[0] = '张三丰'
    
    #打印bList
    print(bList)
    # 打印结果 [['张三丰', '李四', '王五']]
    

    在上面代码中可以看到,已经将一个变量赋给另外一个变量,按照常规理解来说,他们是相互独立的,但实际上并不是;在Python中如果存在二维的list,一维里面往往是记录一个内存地址,并不是把值完整的复制一份,这种引用操作Python中也称之为浅拷贝;

    五、元组(tup)

    在Python中有一种数据类型和list非常相似,称之为元组(tuple);它们最明显区别就是list定义之后可以修改结构,而元组定义之后不能再次修改,其次是在定义的时候有一点点不同,如下代码所示

    #定义list数据
    lst = ['张三', '李四', '王五']
    #定义元组数据
    tple ('张三', '李四', '王五')
    

    在取数据的时候同样支持切片,也同样支持用索引(下标)方式来取值,唯一的区别就是不能再更改里面的值,比如说追加数据或者里面的某一个数据重新赋值。

    六、字典 (dict )

    在PHP中我们知道数组有两种类型,索引数组和关联数组,而关联数组在Python中称之为字典,定义方式和lst区别不大,如下代码所示

    6.1 数据定义

    demo = {
        'k1':'v1',
        'k2':'v2',
        'k3':'v3',
    }
    

    在Python中定义字典相对PHP来说比较严格,对key有要求,不像PHP中可以只输入值而不输入可以,在Python中必须同时输入key和value。

    6.2 增删改查

    Python中的字典增删改查和PHP基本类似,获取字典数据参考代码如下所示

    #明确存在某一个key可以这样取值,如果值不存在会报错
    d['存在的key']
    
    #不知道是否存在的情况
    d.get('不知道存不存在的key')
    

    增加数据的方式比较常规,这里不再特别说明,示例代码如下所示

    #增加一项数据
    data['不存在的key'] = '值'
    

    删除数据的方式有两种形式,第一种是弹出指定数据,第二种是通过方法删除,和PHP基本类似,如下代码所示

    #弹出数据
    data.pop('key')
    #删除数据
    del data['key']
    

    修改数据直接赋值即可,如下代码所示

    # 修改数据
    data['存在的key'] = 新的值
    

    七、杂项

    在Python中对数据会经常处理,这里记录三个常用的操作方法;

    7,1 range 函数

    有时需要定义一个列表,里面包含1~100的所有数值,在PHP中可能需要通过for循环来实现,但在Python中有一个函数range()可以创建一个整数列表,一般用在 for 循环中,如下代码所示

    #range(start, stop[, step])
     for i in range(0,5,1):
         print(i)
    # 打印结果  0 1 2 3 4 5
    

    start参数代表计数从 start 开始,stop是代表计数停止的数值,step则代表一次递增几个数值

    7.2 布尔型说明

    在Python中的布尔值中,数字 0为 False,其他数字都为true,字符串除了''是false以外,其他非空的字符串都是true,tuple类型中除(){}是false,其他都是true,还有Python中表示空的none也是false

    7.3 数据操作

    在Python中如果你想判断一个列表是否包含某一个值可以使用in方式,如下代码所示

    #定义一个列表
    lst = ['tang','qing','song']
    #判断lst是否包含某一个值
    result = 'tang' in lst
    
    print(result)
    #打印结果  True
    

    如果你想知道一个list中是否不包含可以使用not in方式,如下代码所示

    #定义一个列表
    lst = ['tang','qing','song']
    
    #判断lst是否不包含某一个值
    result2 = 'tang' not in lst
    
    print(result2)
    #打印结果  False
    

    在Python中如果你想查看一个列表的长度,可以使用len(lstt)方法 查看列表的长度

    lst = ['tang','qing','song']
    
    print(len(lst))
    
    #打印结果  3
    

    作者:汤青松

    微信:songboy8888

    更新日期:2019-07-21

  • 相关阅读:
    iOS中GestureRecognizer的6大手势与代理方法详细使用
    使用pan手势实现抽屉效果
    mfc HackerTools释放资源
    mfc HackerTools防止程序双开
    FLV简介
    AAC简介
    H.264简介
    PCM简介
    YUV格式
    编译ffmpeg(第一次),实现JPG转MP4
  • 原文地址:https://www.cnblogs.com/tangqingsong/p/11221675.html
Copyright © 2020-2023  润新知