Python 一共有5中数据类型
- number型
- string型
- list(列表)型
- tuple (元组)型
- dictionary(字典)型
1.数字 number型
- int(整型)
- float(浮点型)
- long(长整型)
- complex(复数)
小整型对象池
在python中,所有的对象都存在于系统堆上。想想?如果某个小整数出现的次数非常多,那么Python将会出现大量的malloc/free操作,这样大大降低了运行效率,而且会造成大量的内存碎片,严重影响Python的整体性能。
在Python2.5乃至3.3中,将小整数位于[-5,257)之间的数,缓存在小整型对象池中。
2.string型
(1) 去掉空格和特殊符号
name.strip() 去掉空格和换行符(注意字符串中间的空格不能去除)
name.lstrip() 去掉左边的空格和换行符
name.rstrip() 去掉右边的空格和换行符
name=" ab c "
print(name.strip())
print("去掉左边空格:"+name.lstrip())
print("去掉右边空格:"+name.rstrip())
# 结果:
ab c
去掉左边空格:ab c
去掉右边空格: ab c
(2) 字符串的搜索和替换
name.count('x') 查找某个字符在字符串里面出现的次数
name.capitalize() 首字母大写
name.center(n,'-') 把字符串放中间,两边用- 补齐
str1="anjgggggslkljl"
print(str1.__len__())
print(str1.count('a'))
print(str1.capitalize())
print(str1.center(25,'-'))// 注意:把字符串放中间,两边用(n-字符串的长度)/2补齐
# 结果:
# 14
# 1
# Anjgggggslkljl
# ------anjgggggslkljl-----
name.find('x') 找到这个字符返回下标,多个时返回第一个;不存在的字符返回-1
name.index('x') 找到这个字符返回下标,多个时返回第一个;不存在的字符报错
name.replace(oldstr, newstr) 字符串替换
name.len(str) 字符串长度
str1="anjgggggslkljl"
print(str1.find("a"))
print(str1.find("g"))
print(str1.find("c"))
print(str1.index("a"))
print(str1.index("c"))
print(len(str1))
print(str1.replace("a","ADDa"))
print(str1.startswith("a"))
print(str1.endswith("m"))
print('--'.join(str1))
# /连接字符串.join(slit) 用逗号连接slit 变成一个字符串,slit 可以是字符,列表,字典(可迭代的对象)
# 注意 :int 类型不能被连接
# 结果
# 0
# 3
# -1
# 0
# ValueError: substring not found 传给函数的参数类型不正确,比如给int()函数传入字符串形 :没有找到字符串
# 14
# ADDanjgggggslkljl
# True
# False
#a--n--j--g--g--g--g--g--s--l--k--l--j--l
(3) 字符串的测试和替换函数
s.swapcase() #大小写互换
s.isalnum()方法检测字符串是否由字母和数字组成。
s.isalpha() #是否全是字母,并至少有一个字符
s.isdigit() #是否全是数字,并至少有一个字符
s.isspace() #是否全是空白字符,并至少有一个字符
s.islower() #S中的字母是否全是小写
s.isupper() #S中的字母是否便是大写
s.istitle() #S是否是首字母大写的
str = "this is apple ";
print(str.startswith( 'this' ));
print (str.startswith( 'is', 2, 4 ));
print (str.startswith( 'this', 2, 4 ));
print (str.startswith( 'this', 0, len(str)));
结果:
True
True
False
True
(4) 字符串的分割
name.split() 默认是按照空格分割
name.split(',') 按照逗号分割
name="adh-jap-jn mzn c i -illl-ping"
print(name.split())
print(name.split('-'))
# 结果:
# ['adh-jap-jn', 'mzn', 'c', 'i', '-illl-ping']
# ['adh', 'jap', 'jn mzn c i ', 'illl', 'ping']
(5) 截取字符串(切片)
str2 ="123456789"
print(str2[0:3]) #前包后不包123
print(str2[:])#截取字符串的全部字符
print (str2[6:]) #截取第七个字符到结尾789
print (str2[:-3]) #截取从头开始到倒数第三个字符之前123456
print (str2[-1]) #截取倒数第一个字符9
print (str2[-5:-1]) #截取倒数第五位与倒数第一位之前的字符5678
print (str2[:-5:-1])#逆序截取9876
print (str2[-3:]) #截取倒数第三位到结尾789
print (str2[::-1]) #创造一个与原字符串顺序相反的字符串987654321
print(str2[::-2]) #创造一个与原字符串顺序相反的字符串 97531
print (str2[:-5:-2])#逆序截取97
*(精选)字符串截取
str[:]截取全部字符
str[0:3] 截取1-3位的字符
str[2]截取第三个字符
str[-1]截取最后一个字符
str[: :-1]与原字符串顺序相反的字符串
3.列表(list)
长度可变,支持数字,字符串,布尔,不支持元祖
list1=["a","b",1,2,3]
取值:
print(list1[0])
>>> "a"
赋值
list1[0]=100
print(list1)
>>>[100,"b",1,2,3]
增添
list1.append(35) #加在列表的最后
print(list1)
>>>["a","b",1,2,3,35]
查看
for x in list1:
print(x)
>>>a,b,1,2,3
删除
list.pop() 删除列表最后一个元素
list.pop(2)删除列表中下标为2的元素
list.remove()括号中为列表中的某一元素
list1.remove("b")
print(list1)
>>>["a",1,2,3]
排序
list1.sort() 正序
list1.sort(rverse=True) 倒序
列表中只有数字或只有字母时才可以排序,不允许互相掺杂排序
4.dictionary(字典)型
长度可变 键是唯一的,值可以重复
定义语法:d={k: value,k1: value1,........... }
# 字典是一个无序的数据集合,使用print函数输出字典时,通常
# 输出的顺序和定义的顺序是不一致的!
xiaoming = {"name": "小明",
"age": 18,
"gender": True,
"height": 1.75,
"weight": 75.5}
print(xiaoming)
#{'name': '小明', 'age': 18, 'gender': True, 'height': 1.75, 'weight': 75.5}
2.字典的使用
xiaoming_dict = {"name": "小明"}
# 1. 取值
print(xiaoming_dict["name"])
#小明
# 在取值的时候,如果指定的key不存在,程序会报错!
# print(xiaoming_dict["name123"])
# 2. 增加/修改
# 如果key不存在,会新增键值对
xiaoming_dict["age"] = 18
# 如果key存在,会修改已经存在的键值对
xiaoming_dict["name"] = "小小明"
# 3. 删除
xiaoming_dict.pop("name")
# 在删除指定键值对的时候,如果指定的key不存在,程序会报错!
# xiaoming_dict.pop("name123")
print(xiaoming_dict)
#{'age': 18}
3.字典的其他操作
xiaoming_dict = {"name": "小明",
"age": 18}
# 1. 统计键值对数量
print(len(xiaoming_dict))#2
# 2. 合并字典
temp_dict = {"height": 1.75,
"age": 20}
# 注意:如果被合并的字典中包含已经存在的键值对,会覆盖原有的键值对
xiaoming_dict.update(temp_dict)
print(xiaoming_dict)#{'name': '小明', 'age': 20, 'height': 1.75}
# 3. 清空字典
xiaoming_dict.clear()
print(xiaoming_dict)#{}
5.set集合
长度可变,不可重复,无序排列,值不可以修改
set={"",1}
set.add() 添加位置是随机的
删除
set.remove()
set.discard()
清除 clear
随机删除 pop
拷贝 copy
set1=set2.copy() #拷贝会覆盖其原有的值
set1.update(set2)
功能:更新已有集合
name = {'sd', 'd', 's'}
name.update('df')
print(name)
返回结果:{'sd', 'd', 'f', 's'}
6.集合列表相互转化
5.元祖
长度可变,可以重复,有序,有索引,值不可以修改,可嵌套,可存储各种类型的值
t=(1,2,3,)
含有单个元素的元祖 t=(2,)
嵌套:
t=(1,2,["a","b"])
t[2][0]
>>>a
t--->list #元组转列表
list((1,2,3))