2018-08-04 data type,Group, list
数据输入 ——数据处理 ——数据输出
(1)数据类型
在python中有整形“int"和实数"float";布尔 bool;复数 complex
在运算中,2/2 结果为 1.0 是除法运算,自动保留小数
2//2 结果为1 是整除运算,只取整数部分
bool布尔类型:表示真,假
在bool中数字除0.0 0 是False之外的数都为True(在IDLE中False与Ture首字母要大写,不然会是语法错误)
其他字符非空时为Ture
None 也为False;
字符1与‘1’ 表示的属性是不同的
在' ' 与 " " 使用中 必须成对出现 若想在' '中表示的字符串中出现 ' ,可用 \' 表示;\ 转义字符
(单引号作为定界符时,里面双引号表示的字符串不用 \ 来转义;
双引号作为定界符时,里面单引号表示的字符串不用 \ 来转义;)
表示多行字符可用三引号 ''' ''' 或 """ """
也可以用" \ " 来操作
也可以用函数print来实现 (后面可加转义字符\n,表示转移回车键 但若只在IDLE中输入\n 将会被认作字符)
转义字符:特殊字符
看不见的字符
与语法有冲突的字符
冲突字符,比如在print中 要输出\n这样的字符 可用\\n 表示
也可以在字符串之前加 r (将普通字符串,表示为原始字符串)
但是也遵循引号成对出现规律
字符串的运算 操作
+ 将两个字符串合并
* 后面加上相应的数字,表示重复几遍这个字符串
字符串后面跟 [数字] 正数表示按照序列号取出字符
负数表示从后面开始取出第几个字符
字符串中取字符的方法
各进制之间的转换与表示
0b101 (表示二进制数101)
在pythonIDLE中输入0b101 按回车键默认直接转换为十进制数(其它进制都一样)
0o10(表示八进制数10)
0x1F(表示16进制数1F)
在IDLE中其他转换为2进制数的方法
bin
bin(10) bin(0o77) bin(0xFFF)
在IDLE中其他进制转换为8进制数的方法
oct
oct(10) oct(0b101) oct(0xFFF)
在IDLE中其他进制转换为16进制数的方法
hex
hex(10) hex(0b101) hex(0o10)
在IDLE中其他进制转换为10进制数的方法
int
int(0b101) int(0o10) int(0xFFF)
(2)组、列表
1、在pyhton中列表可用 [ ] ,列表中的数据可以是多类,也可以在一个列表中套嵌另一个列表。但一定是正确类型
2、列表也可以进行运算操作,+ , * ;
也可以进行列中元素提取操作,如字符串提取一样 ,在列表之后 加上 [ ] ,其中有相应参数;注意的是,单个提取出来的是单个字符串,或其他属性值,但是如[0:2 ],加上冒号之后,提取出来的,还是列表;
和字符串提取一样,若从左向右按序列号提取,输入的序列号必须比想提取的字符序列多一位
2.1 增(append)、删(del)、改、查
列表方法
1、从外部输入5个数值,保存起来,找出其中的最大值和最小值。
2、例 :用冒泡法对10个数排序
排序过程:a【2,4,1,5,7,3,88,9,0,31,11】
(1)比较第一个数与第二个数,若为逆序a[0]>a[1],则交换;然后比较第二个数与第三个数;依次类推,直至第n-1个数和第n个数比较为止——第一趟冒泡排序,结果最大的数被安置在最后一个元素位置上。在交换过程中,需要使用过渡的临时变量:
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
(2)对前n-1个数进行第二趟冒泡排序,结果使次大的数被安置在第n-1个元素位置
(3)重复上述过程,共经过n-1趟冒泡排序后,排序结束
2.2字符串与列表之间的转换
字符串——列表 list1=str1.split()
2.21 要区分理解
列表——字符串 join
3、元组(tuple)
(1,2,3,4) 用( )表示一个元组;具体操作和list ,str一样
是不可变的Python对象序列。元组的序列就像列表。唯一的区别是,元组不能被改变,即元组是不可被修改。元组使用小括号,而列表使用方括号。
注意的一点是:当一个元组中只有一个元素的时候,( )会和python运算符号等冲突,IDLE中会认为是其他类;要表示一个元素的元组时,在元素后面加 ‘ , ’号;表示一个空元素的元组时,不用任何字符;
在这些类中,str,list,tuple 属于序列类;其中的多元素可用相应的序列号表示具体的元素;序列操作,有切片,但序号取值,+ * 等;
序列中(各类共用):in 是否存在某个元素
not in 是否不存在某个元素
函数 len 序列集中总共有多少个元素,也就是最高序列号
函数 max 序列集中ascll数最高的元素
函数 min 序列集中ascll数最低的元素
4、集合 set { }
特点:无序,不重复
但支持in ; not in 的判断
集合运算有: | ;合集/并集
& ;交集
- ;差集 (注意的是,差集的运算结果是前者中后者没有的,不包括后者中前者没有的)
空集合的定义,不是 {};而是 set()
5、字典 dict { }
{key1:value1,key2:value2.......} 字典的表示
通过key访问value;
特点:无序,key可以是不同类但不能重复
value:可以是str int list set float dict tuple等类型
key:不可变类型 int str tuple
空的字典可用 { } 表示
增删改查
(3)变量与运算符
1、变量
将一个有大量元素,字符的list,set,tuple等等用一个简单明了的单词,字母等代替;这些单词,字母等可称为变量,
简单来说,就是赋值运算 ;如将B赋值给A,可表示为,A=B ;其中A为变量
变量特性:1.只能是字母,数字,下划线的组合,而且数字不能作为开头
2.系统关键字不能用在变量中 (保留变量名,在IDLE中是黄色的; 也不提倡用别的如函数,类的名称,如type,print等)
3.变量区分大小写
4.python变量没有类型区分,
变量运算中,注意值类型(不可变类型),引用类型(可变)的区别;如int(值类型),list(引用类型)相同的赋值程序,结果会不同
可见在int类型的赋值中,int类型本身是不可变的,所以变量指向的是不同的int类型;而在list类型中,类型中元素是可变的,所以不算元素怎么变化,变量指向的是同一个list类型;所以此番程序输出结果不同
用ID可以知道变量具体指向的类型,可以知道为何输出结果不同,何为可改变与不可改变
值类型(不可变类型): int str tuple
引用类型(可变类型):list set dict
多维度的取值,可如下
所以
字符串格式化
一个变量要用一个%参数对应
浮点型的位数,变量宽度,对其方式(+,- 号的增加) 如下
2、运算符
算数运算符 + ;- ; / ;//(取整) ; %(取余) ;* ;**(乘方)
赋值运算符 = ;+= ;-= ;*= ;**= ;/= ;//= ;%=
赋值运算与算数运算的区别,变量会改变
python中没有 递增 ++ ;递减 --
关系(比较)运算符 ;用算结果为bool值
== (等于);>=(大于或等于);>=(小于或等于);>(大于);<(小于);
!=(不等于);
关系运算优先于算数用算,所以
A 和 B之间不能比较,但 ‘A’ 和 ‘B’之间是可以比较的,比较的是它们的ascll值,
多元素的list ,tuple,set等比较的是从左往右相对应的第一个不同ascll值的大小,而“ == ”,比较的是所有的ascll值
逻辑运算符 (返回结果为bool值)
and(且/并) or(或) not(非)
0是False,1是True
字符串非空为True,空字符串为False,列表非空为True,反之为False.....
'0' ; [0] ; 为非空,为True
其余类型皆可同上
or 和 and 返回值不一定是False与True;但它们的返回值代表的含义一定是值本身的True与False
or与and两边都为True值时(会体现计算机的惰性): or返回的是第一个,因为只判断一个值的是否为True and返回的是第二个值,因为要判断两个的值是否都为True
成员运算符 (返回值也是bool值)
in 是不是在
not in 是不是不在
注意的是dict中判断的是key的值
身份运算符(返回值也为bool值)
is 两个变量身份是否相同
not is 两个变量身份是否不同
is 与 == 的区别:== 判断的是两个值是否等,而 is 判断的是两个值的身份是否相同(id)
type(a)==int;判断变量a是否是整型
isinstance(a,((int,str,float));判断变量a是否是int,str,float其中一种
对象的三个特征及判断方法
id is / is not
value ==
type isinstance
位运算符(变量值的二进制运算)
& (按位与)
| (按位或)
^ (按位异或)
~ (按位取反)
<<(左移动)
>>(右移动)