python是属于弱类型语言,在定义数据类型之前,不须要先声明数据类型。相对应的在强类型语言中(比如c、java等),如果在定义数据之前,没有声明数据类型这回报错。
python3 中,所指的数据类型,并非变量的,而是变量所指内存地址中储存的数据的基本类型。有Number(数字)、String(字符串)、List(列表)、Tuple(元组)、Set(集合)、Dictionary(字典),可以分为两大类:
不可变数据类型:Number(数字)、String(字符串)、Tuple(元组)
可变数据类型:List(列表)、Set(集合)、Dictionary(字典)
数据类型
语法格式
基本操作
创建
增加
删除
改动
查找
切片
其他常用函数或方法
Number(数字)
python3支持 int、float、bool、complex(复数)在pyhotn2.x中,还有长整形long
num = 1
不可变
type();isinstance();数学函数类;
int();float();real();
String(字符串)
。序列
字符串用单引号 ' 或双引号
" 括起来,同时使用反斜杠 \ 转义特殊字符。
str = "abcd123"
del;
不可变
count();
capitalize();
center();
find();
index();
str[0:2];
str[-1];
str[::-1];
str[:-5:-3]
str();
copy();
strip(),lstrip(),rstrip();
format();format_map(d);
startwith();endwith();
isalnum();isalpha();
isdigit();isspace();
islower();isupper();istitle();
replace();
split();
join();
swapcase();capitalize();casefold()
zfill() ; rjust(); ljust();
Booleans布尔值
True;
False。
List(列表)。序列
列表是写在方括号 [] 之间、用逗号分隔开的元素列表。列表可以嵌套
li1 = [1,"aa",[1,2,3]];
li2 = list(1,2,3);
函数或for循环
append();
insert();
list1+list2;
extend();
del;pop;remove;clear;
li1[3] = "替换"
li1[3];
index(‘abc’);
count(‘abc’);
in;
li1[0:1];li2[0::20:3];
list();
cmp();
len();max();min();
sort();reverse();
Tuple(元组)。序列
不可变列表,只可访问
tup1 =
(1,"abc",[0,2],{"a":3,})
del;
不可变
tup1[0];
index();
count()
in
tup1[2:4];
tup1[2:10:2];
tuple();
count();
cmp();
len();max();min();
Dictionary(字典)
字典是python中唯一的映射类型数据,key=>value,其中key值必须是不可变数据类型,并且唯一。形式储存数据,用{}包括内容
dic1 =
{1:"aa","user":["abc",12],(1,2,3):1234};
dict()
dic1["m"] = "add";
dic1.update(dic2)
dic1.setdefault("key",'value')
clear;pop;del;popitem
dic1["m"] = "替换"
dic1["m"]
dic1.get()
dic1.keys()
dic1.values()
dic1.items()
字典不能哈希,不能切片
type();len();cmp();
copy();fromkeys()
len();
has_key();keys();values();items();
get();setdefault();
iterkeys();itervalues();iteritems();
Set(集合)
1.不同元素组成
2.无序
3.集合中的元素必须是不可变类型。
4,{}
s1 = {1,3,9,12}
s2 = set()
add();update();
remove();discard();pop();clear();
issuperset();issubset();
isdisjoint();
intersection();union();difference();symmetric_diference()
其他需要注意的要点:
python基本数据类型中,列表、元组、字符串属于序列,序列都可以进行的操作包括索引,切片,加,乘,检查成员。
Number(数字):
python3支持 int、float、bool、complex(复数),在pyhotn2.x中,还有长整形longString(字符串):
Python 使用反斜杠(\)转义特殊字符,如果不想让反斜杠发生转义,可以在字符串前面添加一个 r,表示原始字符串。另外,反斜杠(\)可以作为续行符,表示下一行是上一行的延续。字符串连接中,除了可以用join()方法,还可以用 + 运算符连接在一起,此外用 * 运算符重复。
三引号,‘’‘ ’‘’ 或者 “”“ ”“” ,可以实现字符串的多行定义、格式化输出等
‘’或者“”表示的是空字符串,判断的时候,对于任意的字符串,空字符串都在里面。即如果用in来判断的时候,空字符串in任意的字符串,结果都是True
注意的是None表示的是一个空对象,而不是空字符串
在对字符串中包括的数据进行类型判断时(主要是数字、字母,较为复杂的可考虑正则表达式)。常见的方法有:
str.isalnum()所有字符都是数字或字母
str.isdigit()所有字符都是数字
str.isalpha()所有字符都是字母
str.islower()所有字符都是小写
str.isupper()所有字符都是大写
str.istitle()所有单词都是首字母大写,像标题
str.isspace()所有字符都是空白字符或\t或\n或\r
List(列表):
可以实现存储较大量的信息,并且存储信息之间是相互独立的。
查询速度随数据量增大而变慢,但运行过程节省内存空间,省资源。
步长,取值的间隔长度。常见在循环语句、切片等操作。步长取正值,表示正向。步长取负值表示逆向取值,另外,也可以轻松实现反转。
一些增删改查的例子:
Tuple(元组):
Dictionary(字典):
字典的查找速度快尤其是在数据量大的情况下更为明显,但消耗内存大。简单点理解,主要是由于对key值进行了hash,并且存储的时候,对hash值进行了排序存在列表空间中。在查询过程中,对输入值进行hash以后,在存储hash的空间中进行快速查找。
字典的遍历有两种常见方式,
1 #方式一:
2 for i indic1:3 print(i) #默认遍历key值
4 print(dic1[i])5
6 #方式二:
7 fori indic.items():8 print(i) #相对相率低一些,优于先到后台将字典元素取出转化成列表,再遍历。
Set(集合):
set的元素必须是可以hash的数据类型,因为在set存储过程中会经过hash处理。
元素必须是不可变的,列表、字典等不行 ,无序,并且不存在完全相同的元素(自动去重)
remove,pop和discard的区别:
discard删除指定元素,当指定元素不存在时,不报错;
remove删除指定元素,但当指定元素不存在时,报错:KeyError。
pop删除任意元素,并可将移除的元素赋值给一个变量,不能指定元素移除。
数据类型的扩展
字节类型(bytes)
是单独的数据类型
frozenset,冻结集合。
通过方法frozenset()返回的冻结集合对象,为不可变数据类型
深浅copy与赋值
深浅拷贝现象的出现,主要源于存储的可变数据类型。
首先了解下,
A:可变数据类型,即在对变量内容进行操作时(增加、改动),a - 变量指向的内存地址不会发生变化,b - 变量指向的内存地址所存储的内容会相应更新。但是,在进行重新赋值时,即使是内容与之前存储ID地址所指向的内容一致,也会重新开辟新的id并存储响应的赋值。
B:不可变,在变量的赋值被改变(增加、改动)时,实际上是发生了对变量的重新定义,具体的,a - 变量指向的内存地址会发生变化,b - 变量指向的内存地址存储的内容是新定义的内容。(注意,此时原来的内存地址如未被释放的话,会仍旧存放着之前的内容)。
Python中的变量的存储,