4. 内置类型

4.1. 真值测试

下面几类值为False

  • 定义为None或者为False

  • 0值,如0,Decimal(0),Fraction(0,1)

  • 空的序列或者集合,如‘’,(),[],{},set(),range(0)

4.2. boolean操作符

操作符

结果

注记

x or y

if x is false,then y, else x

短路操作,如果x为true,后续不判断了

x and y

if x is false , then x else y

如果x是false了,y就不用在判断了

not x

if is false,then true,else false

4.3. 比较操作符号

操作符

描述

对应类方法

<

小于

__lt__()

<=

小于等于

__le__()

>

大于

__gt__()

>=

大于等于

__ge__()

==

等于

__eq__()

!=

不等于

__ne__()

is

对象识别

is not

反向的对象识别

4.4. 数据类型int,float,complex

样例:

# 判断是不是整型
In [65]: (-2.0).is_integer()
Out[65]: True

In [66]: (-2.01).is_integer()
Out[66]: False

# 移位操作
In [67]: 2 << 4
Out[67]: 32

In [68]: 21 >> 2
Out[68]: 5

# 取整数
In [69]: int(3.44)
Out[69]: 3
# 绝对值
In [70]: abs(-3.4)
Out[70]: 3.4
# 除法,第个结果是整除结果,第二个数是余数
In [71]: divmod(9,4)
Out[71]: (2, 1)
# 获取整除结果
In [72]: 9//4
Out[72]: 2
# 获取除法结果
In [73]: 9/4
Out[73]: 2.25
# 获取余数
In [74]: 9%4
Out[74]: 1
# 次方,可以使用pow函数
In [75]: 2 ** 4
Out[75]: 16

4.5. 数据类型 list, tuple, range

样例:

# in 和not in
In [76]: "gg" in "eggs"
Out[76]: True

In [77]: "gg" not  in "eggs"
Out[77]: False

# 集合加法
In [78]: a=[1,2]

In [79]: b=[3,4]

In [80]: a+b
Out[80]: [1, 2, 3, 4]

# 集合乘法
In [81]: "abc" * 2
Out[81]: 'abcabc'

In [82]: [1,2] * 2
Out[82]: [1, 2, 1, 2]

# 集合切片函数
In [86]: s=[1,2,3,4,5,6]

In [87]: s[0]
Out[87]: 1

In [88]: s[1:2]
Out[88]: [2]

In [89]: s[1:3]
Out[89]: [2, 3]

In [90]: s[1:5:2]
Out[90]: [2, 4]

# 获取长度
In [91]: len(s)
Out[91]: 6

# 获取最小值
In [92]: min(s)
Out[92]: 1

# 获取最大值
In [93]: max(s)
Out[93]: 6

# 获取指定item的个数
In [94]: s.count(1)
Out[94]: 1

# 添加元素
In [95]: a=[1,2]

In [97]: a.append([3,4])

In [98]: a
Out[98]: [1, 2, [3, 4]]

#  插入指定位置指定数值,索引为0代表,插入行首
In [99]: a.insert(1,100)

In [100]: a
Out[100]: [1, 100, 2, [3, 4]]

# 弹出最后一个item
In [101]: a.pop()
Out[101]: [3, 4]

In [102]: a
Out[102]: [1, 100, 2]

# 移除特定的item
In [103]: a.remove(100)

In [104]: a
Out[104]: [1, 2]

# 反转集合
In [106]: a.reverse()

In [107]: a
Out[107]: [2, 1]

4.5.1. list

样例:

In [108]: a=[4,5,1,2,10]

# 排序
In [109]: a.sort()

In [110]: a
Out[110]: [1, 2, 4, 5, 10]

4.5.2. Tuples

元组样例

In [111]: a=list(range(1,10,2))

In [112]: a
Out[112]: [1, 3, 5, 7, 9]

In [114]: b = tuple(a)

In [115]: b
Out[115]: (1, 3, 5, 7, 9)

In [116]: b[0]
Out[116]: 1

4.5.3. Ranges

样例:

In [117]: list(range(10))
Out[117]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

In [118]: list(range(1,11))
Out[118]: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

In [119]: list(range(0,30,5))
Out[119]: [0, 5, 10, 15, 20, 25]

# 第三个数是增量step,
In [120]: list(range(0,30,3))
Out[120]: [0, 3, 6, 9, 12, 15, 18, 21, 24, 27]

# start,end,step,这些值可以是负值的。比较灵活
In [121]: list(range(0,-10,-1))
Out[121]: [0, -1, -2, -3, -4, -5, -6, -7, -8, -9]

In [122]: c =list(range(0))

In [123]: c
Out[123]: []

In [124]: bool(c)
Out[124]: False

4.5.4. Text Sequence Type - str

样例:

In [126]: str(b'zhaojiedi')
Out[126]: "b'zhaojiedi'"

4.5.5. String Methods

字符串的方法

样例:

In [In [127]: a="ABC123"

# 首字母大小
In [128]: a.capitalize()
Out[128]: 'Abc123'

# 忽略大小写
In [129]: a.casefold()
Out[129]: 'abc123'

# 中心填充
In [131]: a.center(20)
Out[131]: '       ABC123       '
In [133]: a.center(20,'#')
Out[133]: '#######ABC123#######'

# 计数
In [135]: a.count("b")
Out[135]: 0

In [136]: a.count("1")
Out[136]: 1

# encode和decode进行编码转化
In [137]: b = "赵杰迪"

In [138]: b
Out[138]: '赵杰迪'

In [139]: c =b.encode(encoding='utf-8')

In [140]: c
Out[140]: b'\xe8\xb5\xb5\xe6\x9d\xb0\xe8\xbf\xaa'

In [141]: c.decode(encoding='utf-8')
Out[141]: '赵杰迪'

# 开头字母或者结尾字母是特定字符
In [142]: a.endswith('3')
Out[142]: True

In [143]: a.startswith('s')
Out[143]: False

# 查找特定字符或者字符串的索引位置
In [144]: a.find('2')
Out[144]: 4

In [145]: a
Out[145]: 'ABC123'

# format,这个功能比较强大的
In [146]: "my firstname is {first_name},my lastername is {last_name}".format(first_name="jiedi",last_name="zhao")
Out[146]: 'my firstname is jiedi,my lastername is zhao'

# 字符类型判断
In [147]: a.isalnum()
Out[147]: True

In [148]: a.isdigit()
Out[148]: False

# join连接集合元素
In [156]: "@".join(["a","b","c"])
Out[156]: 'a@b@c'

# 删除结果的空白符号
In [157]: '   spacious   '.lstrip()
Out[157]: 'spacious   '

In [158]: '   spacious   '.rstrip()
Out[158]: '   spacious'

In [159]: '   spacious   '.strip()
Out[159]: 'spacious'

# 替换
In [161]: a="abc"

In [162]: a.replace("ab","AB")
Out[162]: 'ABc'

# 分割字符串
In [163]: "1,2,3,4,5,6".split(',')
Out[163]: ['1', '2', '3', '4', '5', '6']

In [164]:  'Hello world'.title()
Out[164]: 'Hello World'

# 大小写
In [165]: "abc".upper()
Out[165]: 'ABC'

In [166]: "Abc".lower()
Out[166]: 'abc'

# 填充前导0
In [168]: "42".zfill(5)
Out[168]: '00042'

4.5.6. printf

样例:

In [169]: print('%(language)s has %(number)03d quote types.' % {'language': "Python", "number": 2})
Python has 002 quote types.

这个用法和format有点相同。

4.6. Binary Sequence Types — bytes, bytearray, memoryview

二进制的序列类型

4.6.1. bytes

字节样例

In [171]: bytes.fromhex('2Ef0 F1f2  ')
Out[171]: b'.\xf0\xf1\xf2'

In [172]: b'.\xf0\xf1\xf2'.hex()
Out[172]: '2ef0f1f2'

4.6.2. bytearray

字节数组样例:

In [173]: a=b'abc'

In [174]: a.replace(b'c',b'C')
Out[174]: b'abC'

字节数组具体的方法和字符串的方法差不多。

4.6.3. memoryview

样例:

In [175]:  v = memoryview(b'abcefg')

In [176]: v[1]
Out[176]: 98

4.7. Set Types — set, frozenset

集合类型

# 创建一个集合
In [180]: a=set()
# 添加一个
In [181]: a.add(1)
# 查看
In [182]: a
Out[182]: {1}

# 长度
In [183]: len(a)
Out[183]: 1

# 判断是不是在集合中
In [184]: 1 in a
Out[184]: True

In [185]: 2 in a
Out[185]: False

# 集合比较
In [186]: set1=set()

In [187]: set2=set()

In [188]: set1.add(1)

In [189]: set1.add(2)

In [190]: set2.add(1)

In [191]: set1<set2
Out[191]: False

In [193]: set1<=set2
Out[193]: False

In [194]: set1>=set2
Out[194]: True

# 清空集合
In [195]: set1.clear()

# 去除一个元素
In [196]: set2.pop()
Out[196]: 1

4.7.1. Mapping Types — dict

映射类型

样例:

In [197]: a = dict(one=1, two=2, three=3)

In [198]: a
Out[198]: {'one': 1, 'three': 3, 'two': 2}

In [199]: type(a)
Out[199]: dict

In [200]: c = dict(zip(['one', 'two', 'three'], [1, 2, 3]))

In [201]: c
Out[201]: {'one': 1, 'three': 3, 'two': 2}

In [202]: d = dict([('two', 2), ('one', 1), ('three', 3)])

In [203]: d
Out[203]: {'one': 1, 'three': 3, 'two': 2}

# 长度
In [204]: len(d)
Out[204]: 3

# 赋值
In [205]: d["one"] =1

# 查看
In [206]: d["one"]
Out[206]: 1

# 删除属性
In [207]: del d["one"]

In [208]: d
Out[208]: {'three': 3, 'two': 2}

# 判断key
In [209]: "three" in d
Out[209]: True

# 复制
In [210]: e = d.copy()

In [211]: e
Out[211]: {'three': 3, 'two': 2}

# 获取特定属性,提供默认值,如果获取不到,使用默认值
In [212]: d.get("three","5")
Out[212]: 3

In [213]: d.get("ten","5")