python基本类型的学习
本文是小白学习python基础语法的一部分总结,欢迎大家了解或复习python观看,让我们先来讨论一下Python的变量有没有类型?其实python是没有类型的,但 Python 却是区分类型的,那类型在哪里呢?事实是,类型是跟着内存中的对象走的。类型属于对象,变量是没有类型的。一般也分实参和形参。
《learning python》中的一个观点:变量无类型,对象有类型。
python中的变量都是指针,可以指向任意类型
对象类型可以分为不可变对象类型和可变数据类型
不可变(immutable)对象类型
int
float
decimal
complex(复数)
bool
str(字符串)
tuple(元祖)
range
frozenset
bytes
可变(mutable)对象类型
list(列表)
dict(字典)
set(容器)
bytearray
user-defined classes (unless specifically made immutable)
常用的数据类型基本介绍
常用类型:数字,列表(list),元祖(tuple),字典(dic),集合(set),字符串。
python的存储方法:
在python中,不直接存储值,而是存储值的内存地址或者引用。
在python中,不需要事先声明变量名及其类型,使用赋值语句可直接创建任意类型的变量,变量的类型取决于等号右侧表达式值的类型。
赋值比如a=‘ABC’中,Python解释器:
- 内存中创建一个‘ABC’的字符串
- 创建一个名为a的变量,并把它指向ABC
下面进行列表元组字典集合运算符的基本介绍:
list(列表)
- 列表可完成大多数集合类的数据结构的实现,列表中元素可以不相同;
- 列表是写在方括号(【】)之间的,用逗号(,)分隔开的元素列表;
- 列表索引值是以0为开始值,-1为结束值;
- 列表可以进行拼接。
tuple(元祖)
- Tuple与list类似不同之处在于tuple元素不能修改,tuple写在小括号里元素之间用逗号(,)隔开;
- 元素不可变,但可以包含可变对象如list;
- 注意只有一个元素的tuple,必须加逗号。
dic(字典)
- 是无序对象集合,使用(key-value)存储,具有极快的查找速度;
- key 使用不可变对象类型;
- 同一个字典,key必定唯一。
set(集合)
- set与dic类似,也是一组key的集合,但不存储value;
- 在set中没有重复的key ,set也是无序的,重复元素在set中会自动被过滤。
String(字符串)
- 支持字符串的拼接,截取等多种运算;
- 字符串可以保存到变量里,也可以单独存在;
- 字符串属于不可变类型,所有方法都返回处理后的字符串;
运算符
接下来介绍运算符:
运算符有4种:算术运算符,关系运算符,逻辑运算符,成员运算符。
算术运算符
- +:可以进行加法运算,也可以进行字符串之间的拼接;
- -:可以进行减法运算,也可以进行消除相同元素例如:
pythona=[1,2,4,1]
b=[1,2]
c=list(set(a)-set(b))
print(c)
>>[4]
``
- *:可以对元素进行多次重复
- /:可以得到浮点型的结果(这个跟Java,c还是有区别的)
- %:取余
- **:返回x的y次方 例如
print(2**2)
>>4
- //:取整除,向下取整(这个java,c的/是一样的)
逻辑运算符
- and:x and y 如果x为false就返回true,否则返回true;
- or:x or y 如果x为true返回x,否则返回y;
- not:not x 如果x为true返回false,否则返回true。
成员运算符:
- in:在指定的序列中找到值就返回true,没找到值就返回false;
- not in :在指定的序列没有找到值就返回true,找到值就返回false。
身份运算符
主要是is与==区别:
Is:判断两个变量引用对象是否为同一个?
==:用于判断引用变量值是否相等
五种数据类型详细介绍
list(列表)
- 列表列表可完成大多数集合类的数据结构实现;
- 列表中元素可以不相同,它支持数字字符串,甚至可以包括列表;
- 列表元素的修改:列表大小无限制,可随时修改.
基本操作:
代码 | 用法 |
---|---|
list+list | 连接两个列表 |
list*整数类型 | 队列表进行整数次重复 |
list【整数类型】 | 索引元素 |
len(seq) | 列表中元素个数 |
list【整数:整数】 | 取列表的一个子序列 |
for var in list | 列表进行循环枚举 |
expr in list | 检查expr是否在列表中 |
list.append(x) | 在列表的末尾添加元素x |
list.sort( ) | 排序 |
list.reverse( ) | 反转 |
list.index(x) | 第一个出现x的索引值 |
list.insert(i,x) | 在位置i处插入x |
list.count(x) | 返回x出现数量 |
list.remove(x) | 删除元素x |
list.pop(i) | 取出列表中位置i的元素,并删除它 |
tuple(元祖)
- 元祖中各元素存在先后关系,可通过索引访问元祖中元素
- 元组定义后不能更改,也不能删除
- 可通过索引访问的部分元素
- 与字符串一样,可通过+号或*号进行运算
元组与列表的区别
- 元组不可变;
- 元组访问速度比列表更快,开销更小;
- 元组可使代码更加安全;
- 元组可做字典的键,也可做集合元素,但列表不可以,包含列表的元组也不行。
切片操作:
切片是用来获取列表元组,字符串等有效序列中部分元素的一种语法。
【start:end:step】
dir(字典)
- 字典是无序的对象集合,使用(key-value)存储具有极快的查找速度;
- Key,必须使用不可变类型;
- 同一个字典key必须唯一。
代码 | 用法 |
---|---|
keys() | 返回字典中键的列表 |
values() | 返回字典中值的列表 |
Items() | 返回tulple的列表,每个tuple由key—value组成 |
clear | 删除字典的所有条目 |
copy | 返回字典结构的一个拷贝,但不复制嵌入结构 |
update(x) | 用字典x的键值对更新字典内容 |
get (x[y]) | 返回键x若为找到该件返回none,若提供y未找到x时返回y |
字典中的值可以取任意数据类型,但键是不可变的,如字符串数字或元组,
创建字典:
- 常规方法:dict={“1”:23,“2”:“45”}
- 使用dict函数,通过其他映射,如字典或者键值序列来创建
items=[(‘name’,‘xx’),(‘age’,‘12’)] - 也可通过关键字参数创建字典
d=dict(name=‘xx’,age=‘12’)
字典创建添加与删除 - 若键存在,表示修改此键值
- 若键不存在,则添加新元素
字典元素修改添加与删除
代码 | 用法 |
---|---|
update(dict) | 可以将另一个字典的元素一次性全部填加,对当前字典对象,如果两个字点有相同的键,则以另一个字典的值为准,对当前字典进行更新 |
pop(x) | 删除指定的间对应的元素,同时返回对应的值 |
popitem | 删除字典的一个键值对并返回,包含(key,value)的元组 |
del(x) | 可以使用del删除指定的间对应的元素 |
set(集合)
- 无序可变的容器对象,所有元素都放在一个{}里,元素之间使用,号分隔;
- 同一个集合内的元素,是唯一的,不允许重复;
- 集合只能包括数字,字符串,元组等不可变类型的数据;
- 集合中的元素是无序的,元素存储顺序与添加顺序并不一致
- 集合中并不支持使用下标直接访问特定位置下的元素,也不支持使用random的choice()函数,但支持使用random模板下的sample()函数,随机选取部分元素;
- 可看成数学中无序、无重复的元素集合,两个set可以进行交叉并 。
常用方法
代价 | 用法 |
---|---|
s.update() | 将元素添加到集合s中,元素不可以是列表元组字典 |
s.add(x) | 将x添加到集合s中,x若已存在,不进行任何操作 |
s.pop(x) | 将随机删除集合中的一个元素并返回 |
s.remove(x) | 将x从s中删除,如果不存在,发生错误 |
s.discard(x) | 将x从s中移除,如果不存在,不发生错误 |
String(字符串)
特点:可以使用单引号,双引号,三引号括起来,使用反斜杠转义特殊字符,Python 3中,原码文件默认以utf-8 编码,所有字符串都是unicode编码
- 支持字符串的拼接,截取等多种运算;
- 字符串可以保存到变量里,也可以单独存在;
- 字符串属于不可变类型,所有方法都返回处理后的字符串;
- 可是使用type()函数来测试字符串类型;
- 单个索引辅助访问字符串的特殊位置:string[index]
- python字符串索引从0开始,一个长度为L的字符串最后一个字符为L-1;
- python允许反向索引,最右侧索引为-1
常用方法
代码 | 用法 |
---|---|
+ | 连接字符串 |
* | 字符串的重复 |
string[ index] | 索引值 |
string[ : ] | 切片 |
len(string) | 字符串的长度 |
string.upper() | 转大写 |
string.lower() | 转小写 |
string.strip() | 取出两边空格 |
string.spilt() | 指定字符串分割为数组 |
string.join() | 连接两个字符串序列 |
string.find() | 搜索指定字符串序列 |
string.replace() | 替换字符串 |
for var in string | 字符串的迭代 |
上述方法实践:
其实还有好多方法,大家可以去python的api文档看,好累呀!!!
**欢迎提出意见,一起改进,下回发个有技术含量的!!! *