python3.x总复习
1. python有六种基本数据类型:数字number,字符串str,列表list,元组tuple,字典dict和集合set,其中数字,字符串和元组是不可变数据类型。
- 数字: python中的数字类型包括四种:整型int, 长整型long, 浮点型float, 复数complex。python3.x中把int都改成long,然后对外申称都是int了,所以没有long()函数。
简单易错的数字运算:
>>>1/2
0.5
>>>1//2
0
>>>-3**2
-9
>>>import cmath
>>>cmath.sqrt(-1)
1j
- 数字间的转换函数及其它函数
int (x[, base]) | 将x转换为int型数字 |
---|---|
float (x) | 将x转换为浮点型数字 |
complex (real [, imag]) | 创建一个复数 |
hex( x ) | 将整数x转换为其十六进制形式的字符串 |
oct( x ) | 将整数x转换为其八进制形式的字符串 |
round(expr) | 计算表达式,并将结果四舍五入 |
floor(x) | 对数字x向下取整,使用时需要import math |
ceil(x) | 对数字x向上取整, 使用时需要import math |
>>>int('12')
12
>>>int(12.6)
12
>>> float('5')
5.0
>>> float(5)
5.0
>>> complex('5')
(5+0j)
>>> complex(5)
(5+0j)
>>> complex(5, 6)
(5+6j)
>>> complex(5, '6')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: complex() second arg can't be a string
>>> complex('5', 6)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: complex() can't take second arg if first is a string
>>> hex(10)
'0xa'
>>> oct(10)
'0o12'
>>> round(3/2)
2
>>> import math
>>> math.floor(1.9)
1
>>> math.ceil(1.1)
2
为减少内存,python使用内存池来管理小的整型数和小的字符串等等。对于以下赋值:a = 123, b = 123理论上是要分别在内存中创建两个值,然后赋值给变量的,但是这样做实在是有点浪费,明明是一样的数,却要占用两个内存空间。所以在python中,当小的整型(-5~257,不包括257)要多次创建时,只创建一次,后面的都将引用指向同一个地方。例如:
>>> a = 256
>>> b = 256
>>> id(a)
1578732544
>>> id(b)
1578732544
>>> a is b
True
>>> c = 257
>>> d = 257
>>> id(a)
2843231823536
>>> id(b)
2843231825200
>>> a is b
False
- 字符串:
字符串的连接方式:
>>> "hello"' '"world"
'hello world'
>>> "hello" + "world"
'helloworld'
>>> 3*"hello"
'hellohellohello'
字符串的常用函数:
str(x) | 把值转换为合理的字符串形式,以便用户理解 |
---|---|
repr(x) | 会创建一个字符串,它以合法的python表示形式来表示值,以供解释器读取;它和str()的区别是,当值为字符串时,str()返回的是字符串本身’123’,而repr()返回的是解释器读取的字符串," ‘123’ " |
len(x) | 返回字符串的长度 |
str.upper() | 将字符串中的字母全部变为大写 |
str.lower() | 将字符串中的字母全部变为小写 |
str.swapcase() | 将字符串中的字母大小写互换 |
str.capitalize() | 字符串的首字母大写,其它字母不变 |
str.title() | 所有单词的首字母大写 |
str.isdigit() | 判断字符串str是否只由数字组成 |
str.isalpha() | 判断字符串str是否只有字母组成 |
str.strip() | 去掉字符串两端的空格(如果有的话) |
str.split(x) | 将字符串用x分割,返回一个列表;如果没有参数则默认以空格分割。 |
str.join(lst) | 用字符串str将列表lst中的元素连接起来;列表lst中的元素应为str类型 |
str.replace(old, new[, max]) | 把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。返回替换后的字符串,不改变原字符串。 |
str.maketrans(intab, outtab) | 用于创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。两个字符串的长度必须相同,为一一对应的关系。该函数通常与str.translate()一起使用;最后返回一个转换表,它是一个字典,键为intab中的字符对应的ascii码,值为outtab中相应的字符对应的ascii码 |
str.translate(trantab) | 以maketrans()函数的返回值为参数,将str字符串进行转换,返回一个新的字符串,不改原有字符串 |
>>> str(12)
'12'
>>> repr(12)
'12'
>>> str('12')
'12'
>>> repr('12')
"'12'"
>>> print(str('12'))
12
>>> print(repr('12'))
'12'
>>> 'ab12'.upper()
'AB12'
>>> 'ABc12'.lower()
'abc12'
>>> 'ABc12'.swapcase()
'abC12'
>>> 'hello world'.capitalize()
'Hello world'
>>> 'hello world'.title()
'Hello World'
>>> '12'.isdigit()
True
>>> 'abc'.isalpha()
True
>>> ' hello world '.strip()
'hello world'
>>> ' hello world '.split('o')
[' hell', ' w', 'rld ']
>>> '++'.join(['1', '2', '3'])
'1++2++3'
>>> a = 'hello'
>>> b = a.replace('l', 'm')
>>> a
'hello'
>>> b
'hemmo'
>>> c = a.replace('l', 'm', 1)
>>> c
'hemlo'
>>> d = 'hello'
>>> d[0]
'h'
>>> d[0] = 'm'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment
>>> e = 'abc'
>>> f = '123'
>>> str.maketrans(e, f)
{97: 49, 98: 50, 99: 51}
>>> intab = 'aeiou'
>>> outtab = '12345'
>>> trantab = str.maketrans(intab, outtab)
>>> h = 'this is string example...wow!'
>>> i = h.translate(trantab)
>>> h
'this is string examp