PHP工程师学Python数据类型
一、背景
继上篇文章比较了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
作者:汤青松
微信:songboy8888
更新日期:2019-07-21
PHP工程师学Python数据类型的更多相关文章
- 一起学Python——数据类型详解
和学习其他编程语言一样,首先要了解一门语言的数据类型. Python的数据类型有整型.浮点型.字符串.布尔型.日期时间类型.list列表.set集合.tuple元组.dict词典等. 1.整型 就是数 ...
- day2学python 数据类型+深浅拷贝+循环
数据类型+深浅拷贝+循环 别的语言的数组 python不用定义 直接使用 color=['红','橙','黄','绿','青','蓝','紫'] print(color[1:3]) //打印[1,3) ...
- 小白学 Python(2):基础数据类型(上)
人生苦短,我选Python 引言 前文传送门 小白学 Python(1):开篇 接触一门新的语言,肯定要先了解它的基础数据类型.啥?你问我为啥要先了解基础数据类型? 为了你的生命安全,还是乖乖听我 B ...
- 小白学 Python(3):基础数据类型(下)
人生苦短,我选Python 引言 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 前面我们介绍过了数字,本篇我们接着聊另一个常用的基础数据类型:字符串. ...
- 小白学 Python(16):基础数据类型(函数)(上)
人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...
- 小白学 Python(17):基础数据类型(函数)(下)
人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...
- 从零开始学python
自从20世纪90年代初Python语言诞生至今,它已被广泛应用于系统管理任务的处理和Web编程.今天就来给大家看看学Python的五大优势吧! NO.1 全球三大主流编程语言之一 python是一种面 ...
- 【Python五篇慢慢弹】快速上手学python
快速上手学python 作者:白宁超 2016年10月4日19:59:39 摘要:python语言俨然不算新技术,七八年前甚至更早已有很多人研习,只是没有现在流行罢了.之所以当下如此盛行,我想肯定是多 ...
- 学Python后到底能干什么?
Python是一种什么语言? Python是一种计算机程序设计语言.你可能已经听说过很多种流行的编程语言,比如非常难学的C语言,非常流行的Java语言,适合初学者的Basic语言,适合网页编程的Jav ...
随机推荐
- [04] HEVD 内核漏洞之IntegerOverflow
作者:huity出处:https://www.cnblogs.com/huity35/p/11252574.html版权:本文版权归作者所有.文章在博客园.看雪.个人博客同时发布.转载:欢迎转载,但未 ...
- java读写文件小心缓存数组
一般我们读写文件的时候都是这么写的,看着没问题哈. public static void main(String[] args) throws Exception { FileInputStr ...
- js异步解决方法
在浏览器端,耗时很长的操作都应该异步执行,避免浏览器失去响应,最好的例子就是Ajax操作.在服务器端,"异步模式"甚至是唯一的模式,因为执行环境是单线程的,如果允许同步执行所有ht ...
- Redis项目实战---应用及理论(二)---Redis集群原理
一. Redis官方推荐集群方案:Redis Cluster 适用于redis3.0以后版本, redis cluster 是redis官方提供的分布式解决方案,在3.0版本后推出的,有 ...
- web设计_2_灵活的文字
最佳设计:可以让用户自由控制任何页面的文字大小. 浏览器中用户都是可以自定义默认的文字大小的,如果使用 px,用户自行在浏览器设置中改变了文字大小后,网页上是不会变化的.我们不能排除视障用户(如近视) ...
- oracle一条语句插入多个值的方法
今天在实践过程中遇到一个问题, 我想往数据库插入多条数据时,使用了如下语句: insert into 表1 (字段1,字段2) values (1,2),(2,3),(3,4); 这条语句在mysql ...
- Mysql架构简要
1. MySql 最上层是一些客户端和连接服务,包含本地sock通信和大多数基于客户端/服务端工具实现的类似于tcp/ip的通信. 主要完成一些类似于连接处理.授权认证.及相关的安全方案.在该层上引入 ...
- 创建软RAID5
一 创建4块硬盘组软 RAID5 新增四块20G的新硬盘,将四块硬盘分别分区,全部大小都分为一个区,并改 id 为 “ fd ” 1创建阵列mdadm -Cv /dev/md5 - ...
- Web项目如何做单元测试
你可能会用单元测试框架,python的unittest.pytest,Java的Junit.testNG等. 那么你会做单元测试么!当然了,这有什么难的? test_demo.py def inc(x ...
- luogu1220_关路灯 区间dp
传送门 区间dp f[i][j][state] : [i, j]区间 state=0 当前选i state = 1 当前选j 注意枚举的顺序 转移的设计时 在同时刻不在[i,j]区间里的数也要考虑 不 ...