四、数据类型
数据类型,就是变量的类型,用于表示不同特征的变量,不同类型的数据类型。
不可变类型:int,float,str,bool
可变类型:list,dict
1)整型
进制转换:
十进制转其它进制
bin(11)
0b1011
oct(11)
0o13
hex(11)
0xb
转十进制
int('0b1011',2)
int('0o13',8)
int('0xb',16)
长整形
在python2中(python3中没有长整形的概念):
>>> num=2L
>>> type(num)
<type 'long'>
复数(了解)
>>> x=1-2j
>>> x.real
1.0
>>> x.imag
-2.0
2)浮点型
3)字符串
单行:‘字符串’、“字符串”
三引号(用于print中,或者是一个变量值)可以定义多行内容:
‘’‘多行字符串‘’’
“””多行字符串“””
引号嵌套邻近配对,注意不能混用,比如:'字符串"
字符串方法:
list1[0:3:1] # 切片,取出list中的索引 0 到 2 的元素,1 为步长
str1.split() # 以指定字符分割,默认是空格
str1.split(':',1) # 用 ’:’ 分割,只分割一次
str1.strip(‘ *:’) # 去除指定的所有字符,两边的
lstrip,rstrip # 去除空白,从左边,右边
lower,,upper # 字符串转换成全小写,全大写
startswith,endswith # 判断字符串以什么开头,结尾
format # 字符串格式化
split,rsplit # 分割字符串以指定符号,从左边,从右边开始分割
join # 将字符串插入指定字符
':'.join(str1)
Replace #将指定字符替换为其它字符
str1.replace('a','A',1) 替换
str1.isdigit() 纯数字字符串,且是整型
了解:
str1.find.('e') 返回'e'的索引,返回-1,找不到
str1.index('e') 返回索引,报错,找不到
str1.count('e') 返回数量
str1.center(10,'*')
ljust,rjust 一共10位不够用符号填充,str1在中左右
str1.zfill(10) 10位,用0填充
str1.expandtabs(2) 设置制表符为 2 位
captalize 字符串首字母大写
swapcase 大小写反转
title 每个单词首字母大写
isupper,islower 判断是否全大写,全小写
istitle 是否每个单词首字母大写
isalnum 是否由字母和数字组成
isalpha 纯字母
isspace 纯空格组成
isidentifier 定义的名称是否合法
处理输入的一顿操作:
1)strip()
2)Isdigit()
3)Int()
关于判断字符串是否是数字:
b'1' bytes python2中字符串类型的格式,
u'1' Unicode 也就是python3中的普通字符串格式
'一' 中文数字
'Ⅰ' 罗马数字
前提是,纯数字字符串
isdigit 只能判断阿拉伯数字(bytes 和 unicode 都可以)
isnumeric bytes没有这个方法,可以识别阿拉伯数字(unicode)、汉字数字、罗马数字
isdecimal 只可以识别阿拉伯数字(unicode)
4)列表
list 列表:a = [1,2,"3"]
a[0] = 1
a[1] = 2
从 0 开始,索引取值
反向取值,最后一个元素索引为 -1,倒数第二个 -2
a[-1] = "3"
强制转换,能够被for循环遍历的类型:字符串、列表、字典、元组、集合
list('str1')
底部就是遍历这个类型,添加到列表中
一个列表元素添加到另外一个列表中
[] + []
a.extend(b) # b 也是一个可迭代对象
列表方法:
追加,append
list1.append('*')
插入,insert
list1.insert(1,'*')
删除
del # 通用,没有返回值
l.pop() # 删除最后一个值,有返回值
l.pop(0) # 删除0索引的值,返回被删除的值
l.remove('egon') # 删除具体的元素,返回值为None
# 如果删除的元素,不存在列表或者索引越界了,就报错了
切片
和字符串一样有切片方法,完全切片为浅拷贝
l.count('a') # 统计'a'个数
index_a = l.index('1') # 查找元素索引
l.clear() # 清空列表
l.reverse() # 将列表反转,不是排序
l.sort() # 排序
l.sort(key,reverse = False) # 默认是升序,从小到大
l.sort(reverse = True) # 降序,从大到小
字符之间比大小,比如,'abc' 跟 'z' 比较,先比较第一个字母,大小,即决定了结果,如果第一个相同,就比较第二个,最后,先迭代了全部元素的小,大小根据ASCII码表。
队列,FIFO
先进先出
堆栈,LIFO
后进先出
5)字典
字典的key是不可变类型,value是可变类型,key通常是字符串,描述功能
a = {'name':'wl','age':24,}
{key : value}
key 键;value 值;
key 对应 value
取值:a['name'] = 'wl'
按key取值
dict1['key'] = 'no'
有则索引,没有则创建
定义一个字典:
dictionary = {}
定义字典:
dictionary = dict(x = 1,y = 2,z =3)
强制转换(定义字典):
list1 = [[1,2],(1,2)] # 迭代取出的值必须是两个
dict(list1)
初始化字典:
keys = ['name','age','gender'] # 初始化字典
{}.fromkeys(keys,None)
删除
del
d.pop()
d.popitem() # 随机删除,返回键值对元组
d.clear() # 清空字典
d.updata(dict1) # 更新列表,将dict1中的元素,更新到d中,如果key重复的就更新替换
d.get('k1','不存在') # 返回None,或者指定参数
d.setdefault('k1',222) # k1存在就不改,不存在的话创建,返回key对应的值
... 等同于 pass
dict1.get(key),不存在 返回None
dict1.get(key,"自定义的默认值”)
Python2
dict1.keys() key 的列表
dict1.values() value 的列表
python3 迭代器?
老母鸡与鸡蛋
for k in dict1.keys():
print(k)
for k in dict1:
print(k)
for in dict1.values():
print(k)
dict1.items() 键值对
for k,i in dict1.items():
print(k,i)
k,i = ('age',1) 组成的数组(python2)
python3还是母鸡
6)布尔类型
只有两个值:True 和 False,表示真或假。
显式布尔值, 1 > 0 ,True,False
隐式布尔值, 非零即正
7)元组
不可变的列表
不可变是指,元组内存储的每个索引的内存地址,不可变。
存储性
定义元组:
a = ()
a = tuple()
8)集合
定义:
set1 = set()
集合:无序,元素不重复,元素为不可变类型
1、去重
只能针对不可变类型
不能保证顺序
2、关系运算
与:a & b
或:a | b
差集:a - b
对称差集:a ^ b
包含关系:a < b
3、删除元素
s.discard(0) # 具体的元素是啥,不存在do nothing
s.remove(1) # 具体的元素是啥,不存在,报错
s.update({1,}) # 更新
s.pop()
s.add(5) # 添加元素