python的数据类型及格式化输出

时间:2022-09-24 15:33:02

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方法。