Python基础数据类型
一:数据类型分类及介绍
1.数字(int)
数字主要是用于计算用的,主要的方法有:
bit_length() 当十进制用二进制表示时,最少使用的位数
2.布尔值(bool)
布尔值就两种:True,False。就是反应条件的正确与否。
真 1 True。数字非0为真,字符串非空为真。
假 0 False。
2.字符串(str)
2.1 字符串的索引与切片
索引即下标,就是字符串组成的元素从第一个开始,初始索引为0以此类推。
切片就是通过索引(索引:索引:步长)截取字符串的一段,形成新的字符串(原则就是顾头不顾尾)。
2.2 字符串的方法
capitalize() 首字母大写,其他字母小写
upper() 全部大写
lower() 全部小写
swapcase() 大小写反转
title() 非字母的元素隔开的每个单词首字母大写
center(self, width, fillchar=None) 居中,总长度自己设定,默认填充物None
startswith(self, prefix, start=None, end=None) 判断字符串开头,支持切片,返回bool
endswith(self, suffix, start=None, end=None) 判断字符串结尾,支持切片,返回bool
strip(self, chars=None) 去除首尾的空格,制表符\t,换行符。不仅仅是去除空格....chars可以去除指定收尾字符
rstrip(self, chars=None) 去除尾部
lstrip(self, chars=None) 去除首部
split(self, sep=None, maxsplit=-1) 切割成列表,可以指定切割次数
join(self, iterable) 列表转换字符串 '_'.join(list) 指定转换后拼接的字符
replace(self, old, new, count=None) 字符串替换,可以指定替换次数
find(self, sub, start=None, end=None) 通过元素找索引,找不到返回-1
index(self, sub, start=None, end=None) 通过元素找索引,找不到会报错
format(self, *args, **kwargs) 格式化输出,优点可以重复使用
res='我叫{0}今年{1}岁,爱好{2},我依然叫{0}'.format('egon',18,'male')
res='{name} {age} {sex}'.format(sex='male', name='egon', age=18)
len(*args, **kwargs) 公共方法,获取元素个数
count(self, sub, start=None, end=None) 获取指定元素个数,支持切片
print(name.isalnum()) #字符串由字母或数字组成,判断返回bool
print(name.isalpha()) #字符串只由字母组成,判断返回bool
print(name.isdigit()) #字符串只由数字组成,判断返回bool
encode(self, encoding='utf-8', errors='strict') 转化str为bytes类型,使用utf-8编码
bytes.decode('utf-8') 将utf-8的bytes类型转化为str
a = 1
b = 5
a,b = b,a 分别赋值
3.列表(list)
列表是python中的基础数据类型之一,其他语言中也有类似于列表的数据类型,比如js中叫数组,他是以[]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如:
li = [‘alex’,123,Ture,(1,2,3,’wusir’),[1,2,3,’小明’,],{‘name’:’alex’}]
列表相比于字符串,不仅可以储存不同的数据类型,而且可以储存大量数据,32位python的限制是 536870912 个元素,64位python的限制是 1152921504606846975 个元素。而且列表是有序的,有索引值,可切片,方便取值。
3.1 列表的增加
append(self, p_object) 在最后添加
insert(self, index, p_object) 按照索引插入
extend(self, iterable) 迭代添加元素
3.2 列表的删除
pop(self, index=None) 按照索引去删除,有返回值,返回删除的元素
del 按照索引删除,可以切片删除,没有返回值
remove(self, value) 按照元素删除
clear(self) 清空列表
3.3 列表的更改
直接通过索引更改或者切片更改(按照索引删除,迭代添加)
3.4 列表的查询
通过索引查询,或者for 循环
注意:再循环一个列表时,不要对列表进行删除的动作(改变列表元素的个数动作),会改变列表的下标,会出错
3.5列表常用方法
sort(self, key=None, reverse=False) 排序,reverse 反排序
reverse(self) 按照当前顺序反排序
4.元组(tuple)
元组被称为只读列表,即数据可以被查询,但不能被修改,所以,字符串的切片操作同样适用于元组。例:(1,2,3)("a","b","c")
如果元组里面只有一个元素并且没有逗号隔开,那么他的数据类型与该元素一致。
5.字典(dict)
字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可变类型,如:数字、字符串、元组。
字典(dictionary)是除列表意外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
3.1字典的增
dic['a'] = 'b' 有则覆盖,无则添加
setdefault(self, k, d=None) 有则不变,无则添加
3.2字典的删除
pop(self, k: _KT) 删除对应的值,有返回值且返回值可以自己指定
popitem(self) 随机删除,有返回值
clear() 清空字典
3.3 字典的改
将dic所有的键值对覆盖添加(相同的覆盖,没有的添加)到dic2中
3.4字典的查
value1 = dic["name"] # 没有会报错
value2 = dic.get("djffdsafg","默认返回值") # 没有可以返回设定的返回值
3.5 常用方法
items() 函数以列表返回可遍历的(键, 值) 元组数组。
keys() 函数以列表返回一个字典所有的键
values() 函数以列表返回字典中的所有值。
3.6 字典的循环
for i in dic: 循环key值
for i,j in dic: 分别循环key 和values
注意:再循环时,不能改变字典
6.集合(set)
集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的。以下是集合最重要的两点:
去重,把一个列表变成集合,就自动去重了。
关系测试,测试两组数据之前的交集、差集、并集等关系。
1,集合的创建。
set1 = set({1,2,'barry'})
set2 = {1,2,'barry'} 大括号
print(set1,set2) # {1, 2, 'barry'} {1, 2, 'barry'}
2,集合的增。
set1 = {'alex','wusir','ritian','egon','barry'}
set1.add('aaa')
update:迭代着增加
3,集合的删。
set1.remove('alex') # 删除一个元素
set1.pop() # 随机删除一个元素
set1.clear() # 清空集合
del set1 # 删除集合
4,集合的其他操作:
4.1 交集。(& 或者 intersection)
4.2 并集。(| 或者 union)
4.3 差集。(- 或者 difference)
4.4 反交集。 (^ 或者 symmetric_difference)
4.5 子集与超集
set1 = {1,2,3}
set2 = {1,2,3,4,5,6}
print(set1 < set2)
print(set1.issubset(set2)) # 这两个相同,都是说明set1是set2子集。
print(set2 > set1)
print(set2.issuperset(set1)) # 这两个相同,都是说明set2是set1超集。
5,frozenset不可变集合,让集合变成不可变类型。
s = frozenset('barry')
print(s,type(s)) # frozenset({'a', 'y', 'b', 'r'}) <class 'frozenset'>
二、python小数据池与深浅copy
1.小数据池
python中 有小数据池的概念。
int -5 ~256 的相同的数全都指向一个内存地址,节省空间。
str:s = 'a' * 20 以内都是同一个内存地址
只要字符串含有非字母元素,那就不是一个内存地址
2.深浅copy
对于浅copy来说,第一层创建的是新的内存地址,而从第二层开始,
指向的都是同一个内存地址,所以,对于第二层以及更深的层数来说,保持一致性
深copy 对于深copy来说,两个是完全独立的,改变任意一个的任何元素(无论多少层),另一个绝对不改变。
copy() 浅copy
import copy
copy.deepcopy() 深copy

浙公网安备 33010602011771号