PHP工程师学Python数据类型

45次阅读

共计 3616 个字符,预计需要花费 10 分钟才能阅读完成。

一、背景

继上篇文章比较了 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

正文完
 0