一, 背景
继上篇文章比较了 PHP 与 Python 语法之后, 这周又学习了 Python 数据类型, 准备从通过这篇文章给自己进行一些总结, 也给其他读者一些参考.
二, 内容概要
字符串(str)
列表(list)
元组(tup)
字典(dict)
数据操作
三, 字符串(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
来源: https://segmentfault.com/a/1190000019827103