Python-2-Python数据类型
2-1 字符串简单介绍
'A' + 'B' 字符串连接输出'AB'; 'Hello ' * 3 多次连接3次。
'Hello'[0] 取第一个字符;'Hello'[1] 取第二个字符;'Hello'[-1] 取最后一个字符;'Hello'[1:3] 从e开始取取2个字符el,1+2=3所以是[1:3]; 'Hello'[1:] 从第二个字符一直取到最后。
2-2 字符串基础操作(一)
1. strip()
格式:
String.strip([chars])
用法:
chars为空,默认去除头尾空白符(包括\n,\r,\t,'',即:换行、回车、制表符、空格)
chars不为空,函数会将chars拆成一个一个字符,去除头尾指定的字符。
注意:
a. 头尾开始剔除指定字符,直到遇到非匹配字符时便停止。
b. 返回的是去除头尾字符(或空白符)的string副本,string本身不会发生改变。
例子:
' \nabc123abc \r '.strip() //'abc123abc' 去除空格,制表符换行符 'abc123abc'.strip('12') //abc123abc 结果无变化 '123abc123'.strip('12') //'3abc123' 从原字符串中剔除了'12' '123abc12'.strip('12') //'3abc' 首先从头部开始匹配,然后再从尾部开始匹配,匹配到的就删除了 '123abc123'.strip('21') //'3abc123' 写成21还是会匹配上,因为他是将21拆成1,2依次去匹配的,遇到不匹配的就输出了。 '12121212122121213abc123'.strip('21') //'3abc123' 所有匹配上的全删除 '4123abc123'.strip('21') //4123abc123 将21拆开,从首和尾看都不匹配,直接输出
2. lstrip() 和 rstrip()
格式:
String.lstrip([chars]) //left strip
String.rstrip([chars]) //right strip
同 strip() 只是只操作一边的。
2-3 字符串基础操作(二)
1. 判断字符串开头结尾字符
格式:
S.starstwith('L') //判断字符串是否是以L开头
S.endswith('n') //判断字符串是否是以n结尾
例子:
'apple'.startswith('a') //True 'apple'.endswith('e') //True
2. 返回字符串中字符的位置
格式:
S.find('X') 找到这个字符返回下标,存在多个时返回第一个,不存在时返回-1.
S.index('X') 找到这个字符返回下标,存在多个时返回第一个,不存在时报错
例子:
'apple'.find('p') 'apple'.index('p') //1 'apple'.index('q') //报错
3. 字符串替换
格式:
S.replace(oldstr, newstr)
例子:
'lemon'.replace('m', 'mmm') //'lemmmon' 'lemon'.replace('lemon', 'apple') //'apple'
4. 字符串其它操作
格式:
len(S) 返回字符串长度
S.count('x') 查找某个字符在字符串里面出现的次数
S.upper() 将字符串中的小写字母转换为大写字母
S.lower() 将字符串中的大写字母转换为小写字母
S.center(n, '-') 把字符串放中间,两边用-补齐,n为字符串的长度,若n小于等于字符串长度,则返回原值
例子:
len('apple') //5 'apple'.count('p') //2 'apple'.upper() //'APPLE' 'APPLE'.lower() //'apple' 'apple'.center(11, '-') //'---apple---' 'apple'.center(5, '-') //'apple' 小于等于原字符串长度,直接返回原字符串
2-4 字符串进阶操作
1. 字符串格式化
方式有2钟:% 和 format
%用法:
%s 使用str()函数进行字符串转换
%d 转为十进制
%f 转为浮点数
%例子:
'hello %s, %s' %('apple', 'python') //'hello apple, python' 前面有多少个%s后面就要跟多少个字符串 '%d' %(3) //3 'I am %d years old' %(16) //'I am 16 years old' 'I am %(name)s, %(age)s years old' %{'name':'xiaoming', 'age':16} //'I am xiaoming, 16 years old' 在%s中间加变量名 '%f' %(3.14) //'3.140000' 默认6位小数 '%.3f' %(3.14) //'3.140'
format例子:
'hello {}'.format('world') //'hello world' '{1},{0},{1},{1}'.format('hello','world') //'world,hello,world,world' 1和0代表的是后面字符串的序号 'hello {1} {0}'.format('lemon', 'python') //'hello python lemon' 前面可以指定次序 'I am {name},I am {age} years old'.format(name="xiaoming", age='8') //'I am xiaoming,I am 8 years old'
2-5 Number(整型、浮点型与复数)
1. 进制转换
bin 向2进制转换
oct 向8进制转换
int 向10进制转换(注:python2中有int和long,python3中删除了long,但int和python2中的long含义相同了)
hex 向16进制转换
例子:
bin(10) //'0b1010' oct(10) //'0o12' int(10) //10 hex(10) //'0xa'
2. 浮点型
常见带小数的,如3.14、1.2、1.5等。
其它书写格式:10. 小数部分为0可不写;.12 整数部分为0可不写;2e-5 2乘以10的-5次方
10. //10.0 .12 //0.12 type(10) //int type(10.0) //float print(type(3+1)) //<class 'int'> print(type(3+1.0)) //<class 'float'> print(type(3/1)) //<class 'float'> python中相除默认返回浮点型 print(type(3//1)) //<class 'int'> 整除(求商)还是int型
3. 复数
complex([real[, imag]]) real是实部,必填参数,imag虚部,是可选参数。
complex(3) //(3+0j) complex(3, 4) //(3+4j) complex(3, 4).real //3.0 complex(3, 4).imag //4.0 complex('3+4j') //(3+4j) 加号两边不能有空格,否则执行报错
2-6 Number(数字)-布尔类型
用于判断条件是否成立,只有 True 和 False 两种返回值。不为0是True,为0 None 空时是False。小写的 true 和 false 都会报错。
int(True) //1 int(False) //0 isinstance(1, int) //True isinstance(False, int) //True bool(0) //False bool(None) //False bool('') //False bool(' ') //True bool() //False bool([]) //空的列表返回False bool({}) //空的集合返回False
2-7 列表的介绍及基本操作(一)
Python中常见的数据类型有很多种,常见的有列表、元组、字典。
a. 列表,可以把大量数据放在一起,进行集中处理。列表是'[]'包围的数据集合,不同成员以','分隔。列表中可以包含任何数据类型,列表通过下标索引其中成员。
b. 列表,是有序的序列,每个元素都分配一个下标索引,从0开始。
例子:
list() //[] 创建一个空列表 [] //[] 也可以直接使用方括号创建一个空列表 [1,] 或 [1] //创建只有一个元素的列表 [1, 2, 3, 4] //[1, 2, 3, 4] 创建4个元素的列表 ['a', 1, 2, 3.14, [1, 2, 3]] //['a', 1, 2, 3.14, [1, 2, 3]] 列表中再创建一个列表 ['a', 1, 2, 3.14, [1, 2, 3]][0] //'a' 获取列表中的首个元素 ['a', 1, 2, 3.14, [1, 2, 3]][4] //[1, 2, 3] 取列表中的列表 ['a', 1, 2, 3.14, [1, 2, 3]][4][2] //[1, 2, 3] 取列表中的列表中的元素 [1, 2] + [3, 4] //[1, 2, 3, 4] 列表之间的相加操作,但是不支持列表之间的相减操作 [1] * 5 //[1, 1, 1, 1, 1] 列表的相乘操作,列表也是不支持相除操作的 [1, 2] * 5 //[1, 2, 1, 2, 1, 2, 1, 2, 1, 2]
2-8 列表的介绍及基本操作(二)
列表进阶操作
list.count(X) 统计列表中X出现的次数,若不存在则返回0
list.append(X) 向列表尾部追加成员X
list.extend(L) 向列表尾部追加另外一个列表L
list.index(X) 返回参数X在列表中的序号,若不存在则报错
list.insert(index, object) 向列表指定位置插入数据
list.pop() 默认删除列表尾部成员,并返回删除的成员
list.remove(X) 删除列表中指定成员,若有多个则只删除第一个,若指定成员不存在则报错
list.reverse() 将列表中的成员顺序颠倒
list.sort() 将列表中的成员排序(要求成员间可排序,否则报错, 需要是同一数据类型)
例子:
a=[1, 2, 3, 4, 2]; a.count(2) //2 列表中2出现的次数 a=[1, 2, 3, 4, 2]; a.append(4); a //[1, 2, 3, 4, 2, 4] a=[1, 2, 3, 4, 2]; a.append([5, 6, 7]); a //[1, 2, 3, 4, 2, [5, 6, 7]] 追加,直接是一个列表 a=[1, 2, 3, 4, 2]; a.extend([5, 6, 7]); a //[1, 2, 3, 4, 2, 5, 6, 7] 拓展,放在原来列表中 a=[1, 2, 3, 4, 2, 5, 6, 7]; d=['a', 'b', 'c']; a.insert(2, d); a //[1, 2, ['a', 'b', 'c'], 3, 4, 2, 5, 6, 7] 插入 a=[1, 2, 3]; a.pop(); a //[1, 2] a=[1, 2, 3]; a.pop(1); a //[1, 3] 删除指定下标的数据,pop()的参数是下标 a=[11, 12, 33, 12]; a.remove(12); a //[11, 33, 12] 删除的直接是元素
2-9 元组(tuple)
元组基本形式:小括号'()'包围的数据集合,可以通过序号访问元素。
元组可以理解为一种特殊的列表
元组一旦创建,是不可变的。但是当元组元素为列表或字典数据类型时,列表或字典内的内容是可以变的。
例子:
() 或 tuple() //创建一个元组 (1, ) //创建只有一个元素的元组,逗号不可以省略,type((1))是int, type((1, ))是tuple。 a=(11, 22, 33); a[1] //22 访问元组元素 a=(11, 22, 33); a[1] = 10 //报错,元组元素不支持修改 a=(11, 22, 33, [4, 5, 6]); a[3][1] = 10; a //(11, 22, 33, [4, 10, 6]) 元组中元素是列表,列表中的内容可以更改
元组常见函数
len(tuple) //返回元组元素数量
max(tuple) //返回元组最大值
min(tuple) //返回元组最小值
tuple(seq) //将序列转为元组
例子:
a=(1, 2, 3, 4); len(a) //4 a=[1, 2, 3]; type(a) //list a=[1, 2, 3]; type(a); b=tuple(a); type(b) //tuple 将list列表转换为tuple元组
2-10 Dict字典基本操作(一)
字典,是Python中比较常用的数据类型,每个成员以键值对的形式存在。
基本格式:大括号'{}'包围的数据集合。
字典是无序的,通过键访问成员,而不能通过序号位置。
字典的键是不可变的,如字符串、数字和元组数据类型,值可以为任意数据类型。
字典的键最好唯一,创建时若同一个键被赋值多次,则最后一个值被记住。
例子:
{} 或 dict{} //创建空字典 fruits = {'lemon': 5, 'apple': 10} //创建字典 fruits = {'lemon': 5, 'apple': 10}; fruits['lemon'] //根据key获取value fruits = {'lemon': 5, 'apple': 10}; fruits['pear'] //通过字典中不存在的键访问,报错 fruits = {'lemon': 5, 'apple': 10}; fruits['lemon']=20; fruits //{'lemon': 20, 'apple': 10} 更改字典中的值 fruits = {'lemon': 5, 'apple': 10}; fruits['pear']=15; fruits //{'lemon': 5, 'apple': 10, 'pear': 15} 字典中新增一个成员 fruits = {'lemon': 5, 'apple': 10}; del fruits['lemon']; fruits //{'apple': 10} 删除字典中的成员 fruits = {'lemon': 5, 'apple': 10}; del fruits //将整个字典给删除,再访问字典就报错 fruits = {'lemon': 5, 'apple': 10}; fruits.clear(); fruits //{} 清空字典中的元素 fruits = {'lemon': 5, 'apple': 10, 'apple': 13}; fruits //{'lemon': 5, 'apple': 13} 键重复,最后一个值被记住
注意事项:
字典的键是不可变的,值可以是任意数据类型。键的数据类型可以为字符串、数字、元组,不可变数据类型,不能为列表类型。
字典的键最好唯一,创建时如果同一个键被赋值多次,最后一个值会被记住。
2-11 Dict字典基本操作(二)
字典常用函数
dict.copy() 复制字典
dict.get(key, default=None) 获取key对应的值,若key不存在则返回default
dict.items() 获取由键和值组成的迭代器
dict.keys() 获取键的迭代器
dict.values() 获取值的迭代器
dict.pop(key, [default]) 删除key:value的指定的成员对。若key不存在,则返回default
dict.popitem() 从字典末尾删除key:value, 并返回key:value
dict.update({key:value}) 从另一个字典更新成员(存在则覆盖,若不存在就创建)
dict.setdefault(key, default=None) 若字典存在key,则返回对应的值(不会覆盖原值)。若不存在,则建立一个key:default的字典成员。
例子:
fruits1 = {'lemon': 5, 'apple': 10}; fruits2 = fruits1; fruits2 //{'lemon': 5, 'apple': 10} fruits1 = {'lemon': 5, 'apple': 10}; fruits2 = fruits1.copy(); fruits2 //{'lemon': 5, 'apple': 10} fruits1 = {'lemon': 5, 'apple': 10}; fruits1.get('pear') //使用get没有的话默认返回None(就是返回空,啥也不打印) fruits1 = {'lemon': 5, 'apple': 10}; fruits1['pear'] //直接使用这种方式去访问报错,若不想报错就用上面的get fruits1 = {'lemon': 5, 'apple': 10}; fruits1.get('pear', 'Not exit') //'Not exit' 自己指定不使用默认返回的none fruits1 = {'lemon': 5, 'apple': 10}; fruits1.items() //dict_items([('lemon', 5), ('apple', 10)]) 键和值都输出了 fruits1 = {'lemon': 5, 'apple': 10}; fruits1.keys() //dict_keys(['lemon', 'apple']) 获取键迭代器 fruits1 = {'lemon': 5, 'apple': 10}; fruits1.values() //dict_values([5, 10]) 获取值迭代器 fruits1 = {'lemon': 5, 'apple': 10}; fruits1.pop('lemon'); fruits1 //{'apple': 10} 从字典中弹出(删除)一个元素 fruits1 = {'lemon': 5, 'apple': 10}; fruits1.pop('pear', 'Not Exit') //'Not Exit' 弹出一个不存在的键会报错,加个default就不会报错了 fruits1 = {'lemon': 5, 'apple': 10}; fruits1.popitem() //('apple', 10) 从末尾删除一个元素并返回其值。字典empty后还删除也报错。 fruits1 = {'lemon': 5, 'apple': 10}; fruits1.update({'apple':15}); fruits1 //{'lemon': 5, 'apple': 15} fruits1 = {'lemon': 5, 'apple': 10}; fruits1.update({'pear':15}); fruits1 //{'lemon': 5, 'apple': 10, 'pear': 15} fruits1 = {'lemon': 5, 'apple': 10}; fruits1.setdefault('apple', 9); fruits1 //{'lemon': 5, 'apple': 10} fruits1 = {'lemon': 5, 'apple': 10}; fruits1.setdefault('pear', 9); fruits1 //{'lemon': 5, 'apple': 10, 'pear': 9}
2-12 Set集合类型
集合(set)是一个无序的,不重复的数据集合。由于是无序的,不能通过序号(下标)访问。
集合(set)与字典比较相似,都是无序的数据集合。字典通过键访问成员,而集合无法通过键访问成员。
可以使用 '{}' 或 set() 创建集合。
集合具有唯一性,重复成员会自动被删除。
len(S) 集合的长度
in 判断元素是否在集合中
- 求集合差集
& 求交集
| 求并集
例子:
set() //创建一个空集合,不能使用{}创建一个空集合,因为{}创建出来的是一个字典,使用 type({}) type(set()) 可看。 a={1, 2, 3}; a[0] //报错 a={1, 2, 3, 2, 1}; a //{1, 2, 3} c=['lemon','apple', 'pear', 'apple', 'apple']; set(c) //{'apple', 'lemon', 'pear'} 使用集合对列表去重 a={1, 2, 3}; 1 in a //True 判断1是否在集合中 a={1, 2, 3, 4, 5}; b={4, 5, 6}; a-b //{1, 2, 3} 求集合的差集 a={1, 2, 3, 4, 5}; b={4, 5, 6}; a&b //{4, 5} 求集合交集 a={1, 2, 3, 4, 5}; b={4, 5, 6}; a|b //{1, 2, 3, 4, 5, 6} 求集合并集
2-13 Python基本数据类型总结
数字:int float complex(复数) bool(布尔型)
序列: 列表(可变序列),字符串(不可变序列),元组(不可变序列)
字典: 无序,没有索引,通过键值对访问,键是不可变的。
集合: 无序,没有索引,没有重复元素,最大特定是去重,具有唯一性。
2-14 补充
1. 将小数转换为百分数
num1 = 0.75 num2 = 0.85 print('%.2f%% %.1f%%' % (num1*100, num2*100)) #75.00% 85.0%
posted on 2023-07-28 22:41 Hello-World3 阅读(35) 评论(0) 编辑 收藏 举报