二.变量及数据类型

一.变量(*******)

1.什么是变量
量:衡量/计量/记录某种状态
变:记录下的某种状态是可以发生改变的
变量相当于一个容器,记录事物的状态
2.为何用变量
为了让计算机识别各种事物,为了让计算机具有人记录并且识别事物状态的技能。
3.怎么用变量
变量的使用必须遵守先定义后引用的原则
变量的三大组成部分:
变量名:是访问到值的唯一方式,指向变量值,变量是反映事物的属性或者特征。
赋值号:将值的内存地址"赋值"给变量名,也就是将变量值和变量名关联起来。
变量值:事物某种状态。
变量的是通过变量名引用。
变量名的大前提:变量名应该见名知意,能够清楚的表达事物的某种属性
变量值具有三种特征:
id:是变量值在内存中唯一标识(是根据内存地址计算而来)
type :不同类型的值是用来记录不同的状态
value:变量值
4.变量名的命名规范:只能是数字,下划线,字母的组合
不能用数字开头,不能用特殊符号,不能与内置变量名冲突
5.变量名风格包括:
驼峰体:TarryCode 类的命名推荐使用驼峰体
下划线体:tarry_code,变量名推荐使用下划线体
常量:不变的量
用全大写表示常量,默认的常量书写规范。
6.type() 查看数据类型

7.python的内置垃圾回收机制:

在python中,没当一个变量名被引用的时候,会生成一个引用计数,表明该变量名被引用的次数,当引用计数为0时,会自动断开与变量值内存地址的关联关系,

由于变量名是访问变量值内存地址的唯一方式,所以当变量名与变量值没有关联时,会自动将这个变量名对应的值回收,这也就是垃圾自动回收机制

8.变量值的三个特征:

1.id:变量值的唯一编号,内存地址不同id则不同。

2.type:类型

3.value:值

9.身份运算:is 

10.bool值:除了0,None,空的bool为False之外,其余的都为True.

11.逻辑运算:

or:多个条件满足其中一个就成立

and:多个条件必须同时满足

12.小整数池的概念:

在Python中将数字【-5,256】之间的数字放入一个小整数池中,为了减少内存的使用量,在pycharm中的小整数池的范围更大。

二.数据类型:数据类型就是不同的变量值的数据类型

数据类型的不同为了记录不同的事物的属性,如年龄→int,名字→字符串等

有以下数据类型:

1.数字类型:int,float

int:整数型 1,2,3等

float:浮点型  1.12,2.34等

2.字符串:

1>:什么是字符串:字符串就是由一些字符构成的数据类型,在单引号,双引号,三引号中的就是字符串。

2>字符串的使用方法:str是字符串类,里面存放了字符串的调用方法。

.rjust():居右填充

.center()居中填充

.ljust()局左填充

.split():分割

.strip()去空

.rstrip()右边去空

.lstrip()左边去空

.count()判断个数

.expendtabs():将\t转换成空格,可以自己定义,最少定义成4个空格,默认是8个空格

.join()将列表中的元素以某个字符相连,如 list1= ['a','b','c'] ‘*’.join(list1) = a*b*c,相比字符串的+相连节省内存空间。

.format():重点  

三种用法:

<1>:'{0}{1}{2}'.format(name,age)

<2>:'{name}{age}{sex}'.format(name='yuan',age=18,sex=male)

<3>:'{name}{age}{sex}'.format(name:'yuan',age:18,sex:male)

.find():返回字符串是否找到,找到返回字符的索引,找不到返回-1,不会报错,

.index():返回字符串是否找到,找到返回字符的索引,找不到报错

.zifll(width):右对齐,在字符左边填充0,width大于字符长度,才会补充0

.casefold():将所有大写转换成小写

.swapcase(self):将大小写互换 如 : ‘aAc’ → ‘AaC’

.capitalize():首字母大写

.endwith():以什么开头

.startwith():以什么结束

3>.[]切片    

[开始,结束,步长] :特点,顾头不顾尾

[::-1]以步长1从后面开始取,

4>.len()函数:返回对象的长度。len(object)

3.list:列表:可以记录多个值,是有序的数据类型

1.增:

append() 在末尾添加

extend() 将一个列表循环添加到列表中

inster(index,object) 按照索引位置添加元素

2.删

del () 按照索引 如 del l[1]

pop() 删除 按照索引 l.pop(index)

remove(self,object) 按照对象删除 

3.改 

l[index]  = new_value

l.copy() 复制

4.查

index()

.reverse() 列表翻转

.count() 元素的个数

.sort(self,key=,reverse=False)  key对应的是排序的全值,比如列表中的元素按长度排序,sort(key=len(),reverse=False)

reverse默认的升序排序,reverse=True是降序排序

.clear() 列表清空

4.元祖 touple 元祖和列表对比来说就是一个不可变的列表,用法类似,可用for循环

.index() 索引

.count() 计数

元祖里面的元素是不可改变的,是不可变数据

5.字典 dict= {key:value}

字典是有一个键值对构成的,一个key对应一个value

字典里面的keys是可以进行for循环的,是有序的。values是无序的,key是取到value的唯一方式

item对应的是dict的键值对

增:dict = {}  通过定义去增加元素

d.setdefault('key':value) 如果原先字典中没有该key对应的值,则添加该键值对,如果有则不对字典中该key的值进行修改,还是返回原先的值

删:.pop()按照key去删除...popitem() 随机删除字典中的键值对

改:根据定义来修改

查:d{'key'}

d.clear()清除

d.copy()复制

1>>.copy有浅拷贝和深拷贝之分,浅拷贝是指拷贝对象的最外层,不对对象里层的数据进行拷贝,就是直接将原对象的引用指向新的对象,当原对象的值进行改变时,新对象的值也会进行变化,而深拷贝是指建立一个新的内存地址,并将原数据指向新对象得内存地址,当原数据的里层数据进行改变的时候,新对象的值不会发生变化,具体看https://blog.csdn.net/w494675608/article/details/82114798。

6.d.fromkeys(object,default_value) 返回一个新的字典,并且所有key对应的值都相同

l= ['name','age','sex']

d= dict.fromkeys(l,123)

print(d)→{'name':123,'age':123,'sex':123}

d.get()获取key的value,取不到返回None,可以自定义默认值get('key',"default = None")可以在后面自定义默认值返回值

d.keys() 所有的keys

d.update(dict1) 更新 将d更新成dict1,如果d中的key与dict1中的key相同,则将dict1中key的值赋值给d中key对应的值,如果没有,则在d中添加该键值对

d.values()查看字典所有的key对应的值

6.集合 set:

 

集合是不同元素的无序集合。与序列类型不同(如列表,字符串等),集合是没有切片操作的。

 

集合分为两种类型:

 

set —— 可变集合。集合中的元素可以动态的增加或删除。
frozenset —— 不可变集合。集合中的元素不可改变。
注:对于 并集, 交集, 差集 等的返回值,与最左边的操作数具有相同的类型。例如:s & t 取交集。s集合是一个set类型的集合,t集合是一个frozenset类型的集合,则返回的结果将是set类型的集合。

 

s = {1,2,3,4},set是可变的数据类型,set内的元素是不可变的数据类型

集合:关系测试,天然去重,无序去重的
set() 没有值就是set

交集:两个都有   
差集:在列表A里有,B里没有
并集:把两个列表里的元素合并在一起,去重

交集:linux.intersection(python)   linux & python 效果一样
差集:linux.difference(python) linux - difference  效果一样
并集:linux.union(python)  linux | python 效果一样

反向差集(对称差集)

linux.symmetric_difference(python)  两个都没有的一起打印
linux ^ python 效果一样

判断子集:linux.issubset(python) 判断linux是不是python的子集 < 效果一样
判断父集:linux.issuperset(python) 判断linux是不是python的父集 > 效果一样

判断两个集合的关联性:linux.isdisjoint(python)  有关联 return true ,else false 
增:

union: 只会求一个集合,不会改字典原来的值

set update类的方法会把原set的值改变

 

数据类型的总结:
按存值个数区分
1.标量/原子类型 int/string
2.容器类型 list/touple/dict
按可变不可变区分
可变 list,dict ,set
不可变 string,int,touple,frozenset
3.按访问顺序
直接访问 int
顺序访问(序列类型) list/touple/string
key值访问(映射类型) dict

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2019-03-23 18:07  心动丶男孩  阅读(312)  评论(0编辑  收藏  举报