dd = float("inf") # dd表示正无穷 ff = float('-inf') # ff表示负无穷
一、数据类型
python3中,有六个标准的数据类型:
- number 数字
- string 字符串
- list 列表
- tuple 元组
- sets 集合
-
dictionary 字典
此外还有 布尔值类型、时间类型。
关系测试: 关键字 in 判断某个字符是否在字符串中;也可以判断某个元素(或key)是否在列表、元组、集合、字典等中。
1、 数字number
Python3 支持 int、float、bool、complex(复数)。
在Python 3里,整数类型只有 int,即 不区分长整型和整型;
可以用type来查看类型,或者用isinstance来判断数字类型:
-
>>>a=111 >>>isinstance(a,int) True
数字类型转换:
-
int(x [,base]) 将x转换为一个整数 float(x ) 将x转换到一个浮点数 complex(real [,imag]) 创建一个复数 str(x) 将对象x转换为字符串 repr(x) 将对象x转换为表达式字符串 eval(str) 用来计算在字符串中的有效Python表达式,并返回一个对象 tuple(s) 将序列s转换为一个元组 list(s) 将序列s转换为一个列表 chr(x) 将一个整数转换为一个字符(ASCII码的十进制数字转换为字符) unichr(x) 将一个整数转换为Unicode字符 ord(x) 将一个字符转换为它的整数值(字符转换为ASCII的十进制数字) hex(x) 将一个整数转换为一个十六进制字符串 oct(x) 将一个整数转换为一个八进制字符串
数学函数:
-
下面的math是math模块; abs(x) 返回数字的绝对值,如abs(-10) 返回 10 ceil(x) 返回数字的上入整数,如math.ceil(4.1) 返回 5 cmp(x, y) 如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1 exp(x) 返回e的x次幂(ex),如math.exp(1) 返回2.718281828459045。e是一个常数为2.71828 fabs(x) 返回数字的绝对值,如math.fabs(-10) 返回10.0 floor(x) 返回数字的下舍整数,如math.floor(4.9)返回 4 log(x) 如math.log(math.e)返回1.0,math.log(100,10)返回2.0 log10(x) 返回以10为基数的x的对数,如math.log10(100)返回 2.0 max(x1, x2,...) 返回给定参数的最大值,参数可以为序列。 min(x1, x2,...) 返回给定参数的最小值,参数可以为序列。 modf(x) 返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示。 pow(x, y) x**y 运算后的值。 round(x [,n]) 返回浮点数x的四舍五入值,如给出n值,则代表舍入到小数点后的位数。 sqrt(x) 返回数字x的平方根,数字可以为负数,返回类型为实数,如math.sqrt(4)返回 2+0j
2、 字符串 string
Python中的字符串用单引号(')或双引号(")或三引号(''')括起来,同时使用反斜杠()转义特殊字符。
字符串的截取的语法格式如下:
变量[头下标:尾下标] 要头不要尾
如:
a="wjzwz"
print(a[2:4]) #结果为 zw
print(a[2:]) #从第三个到最后
print(a[0]) #打印第一个
print(a[2:-1]) #打印第三个到倒数第二个字符
print(a[2::-1]) # 从第三个开始,-1表示从右往左取值,一个一个取。如果是-2表示从右往左,每隔一个取一个
print(a + "wjk") # 拼接字符串,以后拼接字符串更多的用字符串的join方法
注意:字符串的编码问题。见python的编码问题章节;
3、 列表list
List(列表) 是 Python 中使用最频繁的数据类型。
列表可以完成大多数集合类的数据结构实现。列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套)。列表是写在方括号([])之间、用逗号分隔开的元素列表。和字符串一样,列表同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表。
列表截取的语法格式如下:
变量[头下标:尾下标] 索引值以 0 为开始值,-1 为从末尾的开始位置。
加号(+)是列表连接运算符,星号(*)是重复操作。
此外,List内置了有很多方法: 见列表的内置函数章节。
4、 元组tuple
元组(tuple)与列表类似,不同之处在于元组的元素不能修改。元组写在小括号()里,元素之间用逗号隔开。元组中元素类型可以不相同。
元组可以看做是不可修改的列表(list)。元组也可以进行切片和索引。虽然元组不可变,但是它可以包含可变的对象,如列表。
string、list和tuple都属于sequence(序列)。当元组中只有一个元素时,也要有逗号,如: tuple=(20,)
数学函数:
cmp(tuple1, tuple2) #比较两个元组元素。这个函数是python2的函数。python3中没有
len(tuple) #计算元组元素个数。
max(tuple) #返回元组中元素最大值。
min(tuple) #返回元组中元素最小值。
tuple(seq) #将列表转换为元组。
注:这里元组也可以是列表。
5、 集合set
集合(set)是一个无序不重复元素的序列。基本功能是进行成员关系测试和删除重复元素。
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
创建格式:
-
parame = {value01,value02,...} 或者 set(value)
举例:
-
#!/usr/bin/env python3 student = {'Tom', 'Jim', 'Mary', 'Tom', 'Jack', 'Rose'} print(student) # 输出集合,重复的元素被自动去掉 # 成员测试 if('Rose' in student) : print('Rose 在集合中') else : print('Rose 不在集合中') # set可以进行集合运算 a = set('abracadabra') b = set('alacazam') print(a) # 打印 set(['a', 'r', 'b', 'c', 'd']) print(a - b) # a和b的差集,打印 set(['r', 'b', 'd']) print(a | b) # a和b的并集,打印 set(['a', 'c', 'b', 'd', 'm', 'l', 'r', 'z']) print(a & b) # a和b的交集,打印 set(['a', 'c']) print(a ^ b) # a和b中不同时存在的元素,打印 set(['b', 'd', 'm', 'l', 'r', 'z'])
6、 字典dictionary
字典(dictionary)是Python中另一个非常有用的内置数据类型。
列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
字典是一种映射类型,字典用"{ }"标识,它是一个无序的键(key) : 值(value)对集合。
键(key)必须使用不可变类型。在同一个字典中,键(key)必须是唯一的。
另外,字典类型也有一些内置的函数,例如clear()、keys()、values()等。
注意:
1、字典是一种映射类型,它的元素是键值对。
2、字典的关键字必须为不可变类型,且不能重复。
3、创建空字典使用 { }。
字典的增删改查:
dict = {'name': 'Zara', 'age': 7, 'class': 'First'};
dict["age"]=27; #修改已有键的值
dict["school"]="wutong"; #增加新的键/值对
del dict['name']; # 删除键是'name'的条目
dict.clear(); # 清空词典所有条目
del dict ; # 删除词典,del也可以删除任何变量,如列表、元组、字符串等等对象;
函数对字典的操作:
len(dict) 计算字典元素个数,即键的总数。
str(dict) 输出字典可打印的字符串表示。
type(dict) 返回输入的变量类型,如果变量是字典就返回字典类型。
字典的内置函数(python3):见字典内置函数章节。 补充一个python2的内置方法:
radiansdict.has_key(key) 如果键在字典dict里返回true,否则返回false
字典可以嵌套,即字典中key对应的value可以是一个字典等任意对象。
7、布尔值
-
任何非零数字或非空对象都为真;
-
数字零、空对象以及特殊对象None都被认作是假;
-
比较和相等测试会递归地应用在数据结构中;
-
比较和相等测试会返回True或False(1和0的特殊版本);
-
布尔and和or运算符会返回真或假的操作对象;
逻辑运算遵循短路原则,见运算符章节的逻辑运算部分。
二、格式化输出
在python中,字符串的格式化输出,一般都是使用占位符实现。
如下:
name = input("input your name:")
age = input("input your age:")
if age.isdigit():
age = int(age)
else:
print("must input digit")
exit() #这两句可以合并为 exit("must input digit")
msg='''------------ info of %s ---------
Name: %s
age: %s
''' %(name,name,age) # 这里的%s为占位符
print(msg)
格式化占位符:
%s 打印字符串 print ("His name is %s"%("wj")) %d 打印整数 print ("He is %d years old"%(25)) %f 打印浮点数,默认精度为保留6位小数 print ("His height is %f m"%(1.71)) %.2f 打印浮点数(指定保留小数点位数) print ("His height is %.2f m"%(1.71)) %8d 指定占位符宽度,前面加空格补充 print ("Name:%10s Age:%8d Height:%8.2f"%("wj",25,1.71)) %-10s 指定占位符宽度(左对齐) print ("Name:%-10s Age:%-8d Height:%-8.2f"%("wj",25,1.71)) %08d 指定占位符(用0当占位符补充;8前面的0,如果没有,默认是空格) print ("Name:%-10s Age:%08d Height:%08.2f"%("wj",25,1.71))
另外,格式化输出,可以使用字符串的内置方法format方法。见字符串内置方法章节format方法。