Python基本数据类型(Number、String)

python3中有六种标椎数据类型

Number(数字),String(字符串),List(列表),Tuple(元组),Set(集合),Dictionary(字典)
其中不可变数据有三种: Number,String,Tuple
可变数据有三种:List,Dictionary,Set

定义变量

python定义变量直接变量名=变量值,不需要指定变量类型,当变量值确定的时候,变量的类型就确定了,一个变量上下文可以通过赋值不同的变量值改变类型

可以用del 删除对象的引用

del a
del a,b,c

Number(数字)

python3中支持int,float,bool(True/False–> 1/0),complex(复数)
int 没有限制大小
查看变量的类型可以用type()函数,也可以用isinstance()判断

# <class 'int'>
print(type(3))
# True
print(isinstance(1, int))

type不会将子类判断成父类类型
isinstance 会认为子类是父类类型

class A:
    pass


class B(A):
    pass


obj_b = B()
obj_a = A()
print(type(obj_a))  # <class '__main__.A'>
print(type(obj_b))  # <class '__main__.B'>
print(isinstance(obj_a, A))  # True
print(isinstance(obj_a, B))  # False
print(isinstance(obj_b, A))  # True
print(isinstance(obj_b, B))  # True

数值运算
加(+) 减(-) 乘(*) 除(/ 或 //)
除法中 / 返回一个浮点数,// 返回一个整数
取余(%)
乘方(**)

print(2/4) # 0.5
print(2//4) # 0
print(5%3) # 2
print(2**3) # 8

复数: 我们把形如z=a+bj(a,b均为实数)的数称为复数,其中a称为实部,b称为虚部,i称为虚数单位。当z的虚部等于零时,常称z为实数;当z的虚部不等于零时,实部等于零时,常称z为纯虚数。表达式为a+bj,
python中可以用a+bj表示,或者complex(a,b),a和b都是浮点型
数字类型转换操作:
int(a) 将a 转换成一个整数
float(a) 将a 转换成一个浮点数
complex(a) 将a 转换成一个复数,实数为a,虚数部分为0
complex(a,b) 将a,b 转换成一个复数,a为实数,b为虚数

常用数学函数
部分函数需要导入math模块

import math

abs(x) 绝对值
ceil(x) 向上取整
floor(x) 向下取整
fabs(x) 取绝对值
max(x1,x2,x3…) 取最大值
min(x1,x2,x3…) 取最小值
modf(x) 返回x的整数和小数部分,符号与x相同,整数部分表示为浮点型
pow(x,y) 计算x**y
round(x,n) 计算x的四舍五入值,n指定小数点后位数,可以省略
sqrt(x) 计算x的平方根
sin(x) 计算弧度x正弦值
cos(x) 计算弧度x余弦值
tan(x) 计算弧度x正切值
asin(x) 计算弧度x反正弦
acos(x) 计算弧度x反余弦
atan(x) 计算弧度x反正切
degrees(x) 将弧度x转换成角度
radians(x) 将角度x转换成弧度
两个数学常量: pi 和 e

字符串

python 中单引号和双引号意义相同,反斜杠转义特殊字符,用加号(+)连接字符串,*可以重复字符串
python中没有字符类型

str1 = 'abc'
str2 = 'xyz'
print(str1 + str2) #abcxyz
print(str1*2) #abcabc

字符串截取
python中可以用[index]获取字符串中的字符
[:]用来截取字符串,左闭右开,有两种索引方式,一种是从左到右,0开始,一种是从右到左-1开始
in : 字符串A in 字符串B ,B包含A则返回True
not in: 字符串A not in 字符串B ,B不包含A 返回True
r : r加在字符串前面,该字符串忽略转义

str1 = '123456'
print('str1[2]:',str1[2])
print('str1[1:3]:',str1[1:3])
print('12' in str1)
print('15' not in str1)
print('abc\tdef')
print(r'abc\tdef')
'''
---输出结果如下---
str1[2]: 3
str1[1:3]: 23
True
True
abc	def
abc\tdef
'''

字符串格式化
字符串常用格式化符号:
%c 格式化字符及ASCII码
%s 格式化字符串
%d 格式化整数
%u 格式化无符号整型
%o 格式化无符号八进制数
%x 格式化无符号十六进制数
%X 格式化无符号十六进制数(大写)
%f 格式化浮点数,可以指定精度
%e 使用科学计数法格式化浮点数

    list1 = [('Tom', 'Alen'), 
    		('二狗', '翠花'), 
    		('鸡毛', '蒜皮')]

    for i, j in list1:
        print('%s 喜欢 %s' % (i, j))
    '''
    Tom 喜欢 Alen
    二狗 喜欢 翠花
    鸡毛 喜欢 蒜皮
    '''

python2.6新增了format()函数,更加的灵活
可以指定参数位置

    list2 = [('Tom', 'Alen'), 
		    ('二狗', '翠花'), 
		    ('鸡毛', '蒜皮')]

    for i,j in list2:
        print("{} 喜欢 {}".format(i,j))
        print("{1} 讨厌 {0}".format(i,j))
        print('{1} 喜欢 {0} 弟弟,讨厌{0}'.format(i,j))
        print('-----------')
    
    '''
    Tom 喜欢 Alen
    Alen 讨厌 Tom
    Alen 喜欢 Tom 弟弟,讨厌Tom
    -----------
    二狗 喜欢 翠花
    翠花 讨厌 二狗
    翠花 喜欢 二狗 弟弟,讨厌二狗
    -----------
    鸡毛 喜欢 蒜皮
    蒜皮 讨厌 鸡毛
    蒜皮 喜欢 鸡毛 弟弟,讨厌鸡毛
    -----------
    '''

str.format(*args,**kwargs)详细信息

Format String Syntax(格式字符串语法)

"First, thou shalt count to {0}"  # 0指定第一个参数
"Bring me a {}"                   # 按照默认顺序补充
"From {} to {}"                   # 等价于"From {0} to {1}"
"My quest is {name}"              # 指定变量值
#例如:
print('名字:{name},年龄{age}'.format(name='大黄',age=3))#名字:大黄,年龄3
"Weight in tons {0.weight}"       # 可传入对象,第一个参数的weight属性
#例如:
    class  Dog():
        def __init__(self,name,age):
            self.name = name
            self.age = age

    dog1 = Dog('大黄',3)
    dog2 = Dog('二狗',4)

    print('名字:{0.name},年龄{0.age}'.format(dog1))# 名字:大黄,年龄3
    print('名字:{1.name},年龄{0.age}'.format(dog1,dog2))# 名字:二狗,年龄3
"Units destroyed: {players[0]}"   # players的第一个元素
#例如:
print('名字{name[1]}'.format(name=['aa','bb','cc']))#名字bb

支持三种转换: !s 等价于str() !r 等价于 repr() !a 等价于 ascii()

"Harold's a clever {0!s}"        # Calls str() on the argument first
"Bring out the holy {name!r}"    # Calls repr() on the argument first
"More {!a}"                      # Calls ascii() on the argument first
#例子:
    name = 'Bob'
    age = 23
    print('名字{0!s},年龄{1!s}'.format(name,age))
    print('名字{0!r},年龄{1!r}'.format(name,age))
    print('名字{0!a},年龄{1!a}'.format(name,age))
    '''
    名字Bob,年龄23
    名字'Bob',年龄23
    名字'Bob',年龄23
    '''
    '''
    *arg表示任意多个无名参数,类型为tuple;**kwargs表示关键字参数,为dict。
    def format(self, *args, **kwargs):
        pass
    '''
    list1 = ['aa',1,2,'ss']
    print('{}---{}---{}---{}'.format(*list1))
    dict1 = {'name':'Cc','age':23}
    print('名字{name},年龄{age}'.format(**dict1))
    tuple1 = (1,'bb',2.3)
    print('ID {},名称{},重量{}'.format(*tuple1))
    '''
    aa---1---2---ss
    名字Cc,年龄23
    ID 1,名称bb,重量2.3
    '''

< > = ^ 的用法

    '''
    <   强制字段在可用空间内左对齐(这是大多数对象的默认设置)
    >   强制字段在可用空间内右对齐(这是数字的默认值)
    =   强制将填充放置在符号(如果有)之后但在数字之前,
        这用于以“ +000000120”形式打印字段,
        此对齐选项仅对数字类型有效,当字段宽度紧接“ 0”时,它将成为默认值
    ^   强制字段在可用空间内居中
    '''

    print('{:<20}'.format('abcd'))
    print('{:>20}'.format('abcd'))
    print('{:^20}'.format('abcd'))
    print('{:0=20}'.format(999))
    '''
    abcd                
                    abcd
            abcd        
    00000000000000000999
    '''
e   指数表示法,用字母'e'以科学计数法打印数字以表示指数,默认精度为6,
E   指数表示法,'e'除使用大写字母'E'作为分隔符外,其余均相同,    
f   浮点数,将数字显示为定点数字,默认精度为6,   
F   浮点数,同'f',但转换 nan到 NAN和inf到INF,
g   通用格式,对于给定的精度,这会将数字四舍五入为有效数字,然后根据结果的大小以浮点数或科学计数法格式化结果,
    默认精度是6
G   通用格式,与g相同,如果数字太大则切换到E,无限和NaN的表示也都是大写的,
n   数字,与g相同,而且根据当前的语言环境设置来插入适当的数字分隔符
%   百分比,将数字乘以100并以浮点数('f')格式显示,后跟一个百分号 

官方例子:

>>> '{:+f}; {:+f}'.format(3.14, -3.14)  # show it always
'+3.140000; -3.140000'
>>> '{: f}; {: f}'.format(3.14, -3.14)  # show a space for positive numbers
' 3.140000; -3.140000'
>>> '{:-f}; {:-f}'.format(3.14, -3.14)  # show only the minus -- same as '{:f}; {:f}'
'3.140000; -3.140000'
>>> points = 19
>>> total = 22
>>> 'Correct answers: {:.2%}'.format(points/total)
'Correct answers: 86.36%'
>>> import datetime
>>> d = datetime.datetime(2010, 7, 4, 12, 15, 58)
>>> '{:%Y-%m-%d %H:%M:%S}'.format(d)
'2010-07-04 12:15:58'

String类型的一些方法

	str = 'asdf'
    str.capitalize()
    # 返回字符串的副本,首字母大写,其余字母小写
    str.casefold()
    '''    
    和lower()类似,比lower()强大,可以适用于其他语言,
    例如德语中的'ß',小写是'ss',lower()的结果还是'ß'
    '''
    str.center(1)
    '''
    def center(self, width, fillchar=None) width指定宽度
    fillchar 指定填充字符,如果width小于字符串长度,则width值为字符串长度
    '''
    str.count('a')
    '''
    def count(self, sub, start=None, end=None)
    返回[start,end]范围内sub 的不重复出现次数
    'aaa' 中 'aa' 出现一次
    '''
    str.endswith('')
    '''
    def endswith(self, suffix, start=None, end=None)
    判断字符串是否以suffix结尾,suffix也可以是元组类型
    '''
    str.expandtabs()
    '''
    def expandtabs(self, tabsize=8)
    将字符串中的制表符(\t)转换成空格,tabsize可以指定空格数,默认为8
    '''
    str.find('')
    '''
    def find(self, sub, start=None, end=None)
    返回sub在字符串中的最小索引,未找到则返回-1
    '''
    str.index('')
    '''
    和find类似,但是如果找不到则报错,ValueError: substring not found
    '''
    str.isalnum()
    '''
    如果字符串中所有的字符都是字母数字,而且至少有一个字符,返回True
    '''
    str.isalpha()
    '''
    如果字符串中所有的字符都是字母,而且至少有一个字符,返回True
    '''
    str.isdecimal()
    #  如果字符串中所有的字符都是十进制字符并且至少有一个字符,返回True
    str.isdigit()
    #  如果字符串中都为数字而且至少包含一个字符,返回True
    str.isidentifier()
    #  如果字符串是有效的python标识符则返回True
    str.islower()
    #  如果字符串中所有能大小写的字符为小写,至少有一个大小写的字符,返回True
    str.isnumeric()
    #   如果字符串中所有的字符均为数字字符,至少包含一个字符,返回True
    str.isprintable()
    #  如果字符串中所有的字符均可打印或字符串为空,则返回True
    str.isspace()
    #  如果字符串中只有空格字符并且至少有一个字符,则返回True
    str.istitle()
    #  如果字符串中单词都是大写字母开头并且至少有一个字符,则返回True
    str.isupper()
    #  如果字符串中所有能大小写的字符为大写,至少有一个大小写的字符,返回True
    str.join('')
    '''
    def join(self, iterable)
    iterable 是可迭代的对象,该方法返回一个以str为分隔符将iterable
    中的字符串拼接在一起的字符串,如果iterable 中含有任何非字符串值,
    则报错 TypeError
    '''
    str.ljust(1)
    '''
    def ljust(self, width, fillchar=None)
    返回长度为width的左对齐字符串,使用指定的fillchar填充
    如果width小于字符串长度,则width值为字符串长度
    '''
    str.lower()
    #  将字符串中的所有大小写字符转换成小写
    str.lstrip()
    '''
    def lstrip(self, chars=None)
    返回删除了前缀为chars的字符串,如果省略或者指定chars为None,则默认空格,
    如果chars不是前缀,则该方法删除chars的所有组合
    '''
    str.partition('a')
    '''
    def partition(self, sep)
    在第一次出现sep的位置分割字符串,返回一个3元素的元组,
    包括分隔符之前的部分,分隔符本身,分隔符之后的部分
    如果没有分隔符,也返回一个3元素元组,
    包括字符串本身,两个空字符串
    '''
    str.replace('','')
    '''
    def replace(self, old, new, count=None)
    字符串替换,如果count给定值,则替换至第count次出现的位置
    '''
    str.rfind('')
    '''
     def rfind(self, sub, start=None, end=None)
    返回sub在字符串中[start,end]的最大索引,未找到返回-1
    '''
    str.rindex('')
    # 类似rfind(),未找到则返回ValueError
    str.rjust(1)
    '''
        def rjust(self, width, fillchar=None)
        返回长度为width的右对齐字符串,使用指定的fillchar填充
        如果width小于字符串长度,则width值为字符串长度
    '''
    str.rpartition('a')
    '''
    def rpartition(self, sep)
    在第一次出现sep的位置分割字符串,返回一个3元素的元组,
    包括分隔符之前的部分,分隔符本身,分隔符之后的部分
    如果没有分隔符,也返回一个3元素元组,
    包括两个空字符串,字符串本身
    '''
    str.rsplit()
    '''
    def rsplit(self, sep=None, maxsplit=-1)
    字符串从右到左,使用sep作为分隔符切分,如果指定maxsplit,
    则最多切分maxsplit次,如果没有指定sep,则任意长度的空格字符串
    是一个分隔符
    '''
    str.rstrip()
    '''
    def rstrip(self, chars=None)
    返回删除了后缀为chars的字符串,如果省略或者指定chars为None,则默认空格,
    如果chars不是后缀,则该方法删除chars的所有组合
    '''
    str.split()
    '''
    def split(self, sep=None, maxsplit=-1)
    字符串按照sep分割,如果指定maxsplit,
    则最多切分maxsplit次,如果没有指定sep,则任意长度的空格字符串
    是一个分隔符,如果字符串的开头和结尾具有空格,则返回结果的头尾
    不包含空字符串
    '''
    str.splitlines()
    '''
    def splitlines(self, keepends=None)
    返回字符串中的行列表,在行边界处中断,
    \n 换行 \r 回车 \r\n 回车+换行 \vor\x0b 垂直制表符
    \for\x0c 换页 \x1c 文件分隔符 \x1d 组分隔符
    \x1e记录分隔符 \x85 下一行(C1控制码)
    \u2028 分线器 \u2029 段落分隔符   
    如果指定keepends=True ,则换行符会包含在结果中
    '''
    str.startswith('')
    #  判断字符串是否以prefix为前缀,是返回True
    str.strip()
    '''
    def strip(self, chars=None)
    返回删除了前后缀为chars的字符串,如果省略或者指定chars为None,则默认空格,
    如果chars不是前后缀,则该方法删除chars的所有组合
    '''
    str.swapcase()
    '''
    将字符串大小写转换,s.swapcase().swapcase() == s不一定True
    例如ß,
    print('ß'.swapcase().swapcase()) #ss
    print('ß'.swapcase()) #SS
    '''
    str.title()
    '''
    返回字符串的标题版本,单词以大写字母开头,其余字符为小写字母
    '''
    str.upper()
    # 字符串小写字符转换成大写
    str.zfill(2)
    '''
    字符串前填充0,将字符串填充至长度为指定长度,如果字符串以(+或-)为
    前缀,则(+或-)继续作为返回字符串的前缀.如果指定的width值小于或等于
    字符串长度,则width的值为字符串的长度
    '''

猜你喜欢

转载自blog.csdn.net/zZsSzss/article/details/102839828