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的值为字符串的长度
'''