1.基本变量类型
计算机程序要处理不同的数据,需要定义不同的数据类型。Python 定义了六种标准的数据类型,分布如下所示:
Numbers(数字)
Strings(字符串)
List(列表)
Tuple(元组)
Set(集合)
Dictionary(字典)
1.1Numbers(数字)
数字类型用于存储数值,它是不可改变的数据类型。Python 3 支持以下几种数字类型:
int (整数)
float (浮点型)
complex(复数)
bool (布尔)
数字类型的使用很简单,也很直观,如下所示:
# int
q = 1
# float
w = 2.3
# bool
e = True
# complex
r = 1 + 3j
print(q, w, e, r) # 1 2.3 True (1+3j)
# 内置的 type() 函数可以用来查询变量所指的对象类型
print(type(q)) # <class 'int'>
print(type(w)) # <class 'float'>
print(type(e)) # <class 'bool'>
print(type(r)) # <class 'complex'>
# 也可以采用 isinstance()
# isinstance 和 type 的区别在于:type()不会认为子类是一种父类类型,isinstance()会认为子类是一种父类类型
print(isinstance(q, int)) # True
print(isinstance(q, float)) # False
混合计算的时候, Python 会把整数转换为浮点数。
1.2 Strings(字符串)
注意:
1、反斜杠可以用来转义,使用 r 可以让反斜杠不发生转义。
2、字符串可以用 + 运算符连接在一起,用 * 运算符重复。
3、Python 中的字符串有两种索引方式,从左往右以 0 开始,从右往左以 -1 开始。
4、Python 中的字符串不能改变。
字符串包含了很多内置函数,这里只介绍几种非常常见的函数:
strip(x):当包含参数 x 表示删除句首或者句末 x 的部分,否则,就是删除句首和句末的空白字符,并且可以根据需要调用 lstrip() 和 rstrip() ,分别删除句首和句末的空白字符;
split():同样可以包含参数,如果不包含参数就是将字符串变为单词形式,如果包含参数,就是根据参数来划分字符串;
join():主要是将其他类型的集合根据一定规则变为字符串,比如列表;
replace(x, y):采用字符串 y 代替 x
index():查找指定字符串的起始位置
startswith() / endswith():分别判断字符串是否以某个字符串为开始,或者结束;
find():查找某个字符串;
upper() / lower() / title():改变字符串的大小写的三个函数
# strip()
s3 = " I love python "
s4 = "show something!"
print('输出直接调用 strip() 后的字符串结果: ', s3.strip())
print('lstrip() 删除左侧空白后的字符串结果: ', s3.lstrip())
print('rstrip() 删除右侧空白后的字符串结果: ', s3.rstrip())
print('输出调用 strip(\'!\')后的字符串结果: ', s4.strip('!'))
# split()
s5 = 'hello, world'
print('采用split()的字符串结果: ', s5.split())
print('采用split(\',\')的字符串结果: ', s5.split(','))
# join()
l1 = ['an', 'apple', 'in', 'the', 'table']
print('采用join()连接列表 l1 的结果: ', ''.join(l1))
print('采用\'-\'.join()连接列表 l1 的结果: ', '-'.join(l1))
# replace()
print('replace(\'o\', \'l\')的输出结果: ', s5.replace('o', 'l'))
# index()
print('s5.index(\'o\')的输出结果: ', s5.index('o'))
# startswith() / endswith()
print('s5.startswith(\'h\')的输出结果: ', s5.startswith('h'))
print('s5.endswith(\'h\')的输出结果: ', s5.endswith('h'))
# find()
print('s5.find(\'h\')的输出结果: ', s5.find('h'))
# upper() / lower() / title()
print('upper() 字母全大写的输出结果: ', s5.upper())
print('lower() 字母全小写的输出结果: ', s5.lower())
print('title() 单词首字母大写的输出结果: ', s5.title())
1.3 列表
同样,列表也有很多内置的方法,这里介绍一些常见的方法:
len(list):返回列表的长度
append(obj) / insert(index, obj) / extend(seq):增加元素的几个方法
pop() / remove(obj) / del list[index] / clear():删除元素
reverse() / reversed:反转列表
sort() / sorted(list):对列表排序,注意前者会修改列表内容,后者返回一个新的列表对象,不改变原始列表
index():查找给定元素第一次出现的索引位置
2. 数据类型的转换
有时候我们需要对数据类型进行转换,比如列表变成字符串等,这种转换一般只需要将数据类型作为函数名即可。
下面列举了这些转换函数:
int(x, [,base]):将 x 转换为整数,base 表示进制,默认是十进制
float(x):将 x 转换为一个浮点数
complex(x, [,imag]):创建一个复数, imag 表示虚部的数值,默认是0
str(x):将对象 x 转换为字符串
repr(x): 将对象 x 转换为表达式字符串
eval(str): 用来计算在字符串中的有效 Python 表达式,并返回一个对象
tuple(s): 将序列 s 转换为一个元组
list(s): 将序列 s 转换为一个列表
set(s):转换为可变集合
dict(d): 创建一个字典。d 必须是一个序列 (key,value)元组
frozenset(s): 转换为不可变集合
chr(x):将一个整数转换为一个字符
ord(x):将一个字符转换为它的整数值
hex(x):将一个整数转换为一个十六进制字符串
oct(x):将一个整数转换为一个八进制字符串
3.数字处理函数
取整函数的原则;(math向上向下,int截断/整除// round)
天花板ceil 与地板 floor ;
int只管它的整数部分(无论正负);
round 函数规则:四舍六入五取偶数(离他最近的偶数),区分正负
// 取整函数去区分正负;数值都是往下走的,趋向于小值;(负数:正值+1取负值;)
min(iterable,[key,default]) #可迭代的对象;
pow(2,3)#2的3次方=2**3
#合法数字的转化为字符;
# bin 转换为二进制;
# hex 转换为16进制;
# math.pi=3.141592654
# type()函数输出的是类型,不是字符;
# isinstance(a,b) a是否是b的类型;
如何快速判断一个数据类型是否可以更改呢?有以下两种方法:
id():判断变量更改前后的 id,如果一样表示可以更改,不一样表示不可更改。
hash():如果不报错,表示可以被哈希,就表示不可更改;否则就是可以更改。
i = 2
print('i id value=', id(i))
i += 3
print('i id value=', id(i))
输出结果,更改前后 id 是更改了,表明整型变量是不可更改的。
i id value= 1758265872
i id value= 1758265968
然后在列表变量上进行同样的操作:
l1 = [1, 3]
print('l1 id value=', id(l1))
l1.append(4)
print('l1 id value=', id(l1))
输出结果,id 并没有改变,说明列表是可以更改的。
l1 id value= 1610679318408
l1 id value= 1610679318408
然后就是采用 hash() 的代码例子:
# hash
s = 'abc'
print('s hash value: ', hash(s))
l2 = ['321', 1]
print('l2 hash value: ', hash(l2))
输出结果如下,对于字符串成功输出哈希值,而列表则报错 TypeError: unhashable type: 'list',这也说明了字符串不可更改,而列表可以更改。
s hash value: 1106005493183980421
TypeError: unhashable type: 'list'
总结:
1. 内置函数是可迭代对象;本质上是列表是可迭代对象;
2. 隐式转换(数值类型之间的转换,高级语言都支持)能像整型像整形,整形不够就浮点型;
3. 强弱转换(不同类型转换)
网友评论