目录
1、数字类型
1.1 整型
内有几种进制:
转换:
- 二进制函数 bin()
- 八进制 oct()
- 十进制 int( )
- 十六进制 hex()
1.2 浮点型
- round (num,保留几位)
- decimal 精确小数
from decimal import Decimal
mydec = Decimal(1.223)
print(mydec)
mydec = Decimal("1.223")
print(mydec)
输出:
1.2230000000000000870414851306122727692127227783203125
1.223
1.3 复数 complex
实部和虚部存储的都是浮点型。
2、字符串
常用方法:
2.1 判断系列 is
字符串常用方法——判断系列(True/False)
- str.isdigit() 字符串中是否只包含数字
- str.isnumeric() 字符串中是否只包含数字(包括中文一到九等)
- str.isalnum() 字符串中是否只包含字母或数字
- str.istitle() 字符串中是否每个单词首字母大写,其他字母小写
- str.isalpha() 字符串中是否只包含字母(汉字会算作字母)
- str.isupper() 字符串中是否全为大写
- str.islower() 字符串中是否全为小写
- str.isidentifier() 字符串是否为合法标识符
- str.isprintable() 字符串是否为可打印字符
- str.isspace() 字符串中是否只包含空格(tab也算空格)
- str.startswith(prefix[, start[, end]] 字符串是否以某字符串开始,可以通过start和stop参数设置搜索范围
- str.endswith(suffix[, start[, end]]) 字符串是否以某个字符串结束,可以通过start和stop参数
2.2 查找统计类
- len(str) 长度
- str.count(" ") 子串出现的次数
- str.index(" ") 查找子串第一次出现的位置
- str.find(" ") 查找子串第一次出现的位置
str.index(sub [,start [,end]]) 显示substring在字符串中第一次出现的下标位置,没有会报错。
str.find(sub [,start [,end]]) 查找substring,找到返回其起始位置, 找不到返回-1。
2.3 转换类
- str.upper 大写
- str.lower 小写
- str.title 首字母大写
- str.swapcase() 大小写互换
- str.replace("旧", "新") 字符替换
msg = "i am ok"
msg1 = msg.upper()
print(msg1)
输出:
I AM OK
2.4 填充、拼接、分割
填充:
- str.center(width[, fillchar])
- str.ljust(width[, fillchar])
- str.rjust(width[, fillchar])
msg = "iamok"
print(msg.center(20,"^"))
print("iamok".center(20,"*"))
输出:
^^^^^^^iamok^^^^^^^^
*******iamok********
拼接、分割:
msg = "iamok"
msg1 = "1244"
msg2 = " t:r:y "
print(msg+msg1)
print(msg.join(msg1))
print("~".join(msg))
print(msg2.split(),msg2.split(":"))
输出:
iamok1244
1iamok2iamok4iamok4
i~a~m~o~k
['t:r:y'] [' t', 'r', 'y ']
str.split('sep') 指定'sep'作为分隔符将字符串切割成列表,分隔符可以是任意字符(默认是空格),str.strip() 默认去掉首尾的空格。
2.5 格式化
基本格式:
%[(name)][flags][width].[precision]typecode
- (name):命名。
- flags: +,-,' '或0。+表示右对齐;-表示左对齐;' '为一个空格,表示在正数的左侧填充一个空格,从而与负数对齐,0表示使用0填充。
- width表示显示宽度。
- precision表示小数点后度精。
① % 占位符格式化
str = input("Please input your name:")
age = input("Please input your age:")
print("my name is %s, my age is %s"%(str,age))
输出:
Please input your name:c
Please input your age:18
my name is c, my age is 18
②format 格式化
{变量:[填充字符][对齐方式 <^>][宽度][格式]}
<左对齐 ^居中 >右对齐
print("format01-->{1:*<8}".format(9, 9))
print("my name is {0},age is {1}".format("c", 18))
print("my name is {1},age is {1}".format("c", 18))
输出:
format01-->9*******
my name is c,age is 18
my name is 18,age is 18
③ f 标志位格式化
str = input("Please input your name:")
age = input("Please input your age:")
print(f"my name is {str}, my age is {age}")
输出:
Please input your name:c
Please input your age:18
my name is c, my age is 18
Python3支持,Python2不支持。
⑥切片
请参考:
Python的切片及切片的使用方法_忙碌且充实的博客-优快云博客_python中的切片的用法
3、常量 Nonetype
Python里面没有常量。
什么是常量?
常量是指一旦初始化后就不能修改的固定值,注意:在Python中表示一个常量通常用大写(约定俗成,非强制)表示,如:PI=3.1415926。
4、布尔类型 Booleans
布尔值(Booleans) 布尔值是一个逻辑值,可以参与运算。
1.哪些值布尔值为假
- '', 0, 0.0, (), [],{},None, False
- None是一个特殊的常量,表示一种特殊的数据类型(NoneType)
- 哪些值布尔值为真
- 除了为假的,其他的都为真
取值范围
• 只有 True和 False(真和假)
5、数据结构(容器类型)
5.1 列表 list
有序项目集合,可以存放任何数据类型对象,可变数据类型(string,不可变类型)。
①增加
- append
- insert
- extend
变量名.append("xx") 在末尾追加xx,每次只能追加一个元素。
insert 在指定下标位置插入元素 变量名.insert(位置,新增元素)。
变量名.extend("")拆开元素,参数需要是可迭代对象(可被for循环获取的就是可迭代对象)。
append
>>> list=[1,2,3]
>>> list.append(0)
>>> list
[1, 2, 3, 0]
insert
>>> list.insert(1,5)
>>> list
[1, 5, 2, 3, 0]
extend
>>> list.extend("bbb")
>>> lsit
[1, 5, 2, 3, 0, 'b', 'b', 'b']
③删除
- remove
- pop
- clear
- del
remove 按元素删除,若有重复删除遇到的第一个元素,若列表中无指定元素会报错,退出。
删除 pop 指定下标删除,默认删除最后一个,并且将删除元素作为返回值返回。
clear 清空列表。
del lst[3:5] 删除引用,只要切片能切出来,或通过下标取出来,那del都能删除。
remove
>>> list.remove(5)
>>> list
[1, 2, 3, 0, 'b', 'b', 'b']
pop
>>> list
[1, 2, 3, 0, 'b', 'b', 'b']
>>> list.pop(0)
1
>>> list
[2, 3, 0, 'b', 'b', 'b']
.clear
>>> list.clear()
>>> list
[]
del
>>> lis=[1,2,3]
>>> del lis[2]
>>> lis
[1, 2]
④修改、查询
切片修改,一定要接受可迭代对象;如果切片出来的列表为空,则会在start的位置插入;切出来的不为空,则替换查找出来的list元素。
>>> lst=[2, 3, 0, 'b', 'b', 'b']
>>> lst[1:5]
[3, 0, 'b', 'b']
>>> lst[1:5]="c"
>>> lst
[2, 'c', 'b']
>>> lst[1:1]="imok"
>>> lst
[2, 'i', 'm', 'o', 'k', 'c', 'b']
⑤顺序
- lst.sor()
- lst.reverse()
负切片,不修改本身,lst.sort(reverse = True) 倒序排序,字符串按照Unicode的编码进行排序,按第一个字符顺序来编码。
>>> lst[::-1]
[9, 8, 7, 6, 5, 4, 3, 'l']
>>> lst
['l', 3, 4, 5, 6, 7, 8, 9]
>>> lst.reverse()
>>> lst
[9, 8, 7, 6, 5, 4, 3, 'l']
>>> lst1
[5, 99, 0, 4, 5, 6]
>>> lst1.sort()
>>> lst1
[0, 4, 5, 5, 6, 99]
>>> lst6 = [2,6,2,4,6,8]
>>> lst6.sort(reverse = True)
>>> lst6
[8, 6, 6, 4, 2, 2]
>>> lst6.sort(reverse=False)
>>> lst6
[2, 2, 4, 6, 6, 8]
⑥复制
浅拷贝
>>> lst
[2, 'i', 'm', 'o', 'k', 'c', 'b']
>>> lst2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'lst2' is not defined
>>> lst2=lst
>>> lst2
[2, 'i', 'm', 'o', 'k', 'c', 'b']
>>> id(lst)
140414121457288
>>> id(lst2)
140414121457288
>>> lst.append("5566"
>>> lst2
[2, 'i', 'm', 'o', 'k', 'c', 'b', '5566']
>>> lst3
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'lst3' is not defined
>>> lst3=lst[::]
>>> lst3
[2, 'i', 'm', 'o', 'k', 'c', 'b']
深拷贝
>>> lst4
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'lst4' is not defined
>>> lst4=lst.copy()
>>> lst4
[2, 'i', 'm', 'o', 'k', 'c', 'b']
>>> lst.append("5566")
>>> lst4
[2, 'i', 'm', 'o', 'k', 'c', 'b']
>>> lst
[2, 'i', 'm', 'o', 'k', 'c', 'b', '5566'
浅拷贝:浅拷贝里的元素是对原对象元素的引用,因此 lst2 中的元素和 lst 指向同一个列表对象。
所谓深拷贝,是指重新分配一块内存,创建一个新的对象,并且将原对象中的元素,以递归的方式,通过创建新的子对象拷贝到新对象中。因此,新对象和原对象没有任何关联。
⑦运算
可以进行 +和* 的运算。
>>> lst
[1, 2]
>>> lst10=lst*2
>>> lst10
[1, 2, 1, 2]
>>> lst11=lst+lst10
>>> lst11
[1, 2, 1, 2, 1, 2]
5.2 元组tuple
有序项目集合,可存放任意数据类型,不可变数据类型,一旦定义不能改变,只有一个元素,一定要在一个元素后面打逗号,若元组里面有可变数据类型 ,可变数据类型可以改变。
>>> t1 = ("a", [1, 4], 5.3)
>>> t1[1]
[1, 4]
>>> t1[1].append(5)
>>> t1
('a', [1, 4, 5], 5.3)
>>> t3 =(1,)
>>> type(t3)
<class 'tuple'>
>>> t4 = (5)
>>> type(t4)
<class 'int'>
5.3 字典dict()
d2.get('a', 0),dict.get(key, default)获取key的值,如果没有就会返回default的默认值,若没有定义default则会返回None。
>>> d2 = {"a":2, "b":6}
>>> d2['a']
2
>>> d2.get('c', 0)
0
>>> d2.get('a', 0)
2
①新增
key存在则修改,不存在表示新增,判断是否存在,‘xx’in dict 获取的是key的值,直接取值dict[key],当key不存在,会报错。
>>> d2['c'] = 5
>>> d2
{'a': 2, 'b': 6, 'c': 5}
>>> d2['c'] = 6
>>> d2
{'a': 2, 'b': 6, 'c': 6}
>>> d2['d'] = 1
>>> d2
{'a': 2, 'b': 6, 'c': 6, 'd': 1}
>>> d2
{'a': 2, 'b': 6, 'c': 6}
>>> 'y' in d2
False
>>> 6 in d2
False
>>> 6 in d2.values()
True
>>> d2.values()
dict_values([2, 6, 6])
②删除
d.pop('key) 有返回值,d.popitem(key )有返回值,默认删除最后一个。
>> d2
{'a': 2, 'b': 6, 'c': 6, 'd': 1}
>>> d2.pop('a')
2
>>> d2
{'b': 6, 'c': 6, 'd': 1}
>>> d2.popitem()
('d', 1)
>>> d2
{'b': 6, 'c': 6}
③修改
- d2.update(d3)
- dict(d2,**d4) d2和d4合并生成一个全新的字典
>>> d2
{'b': 6, 'c': 6}
>>> d1={"a":1}
>>> dict(d2,**d1)
{'b': 6, 'c': 6, 'a': 1}
>>> d2
{'b': 6, 'c': 6}
>>> d1.update(d2)
>>> d1
{'a': 1, 'b': 6, 'c': 6}
>>> d2
{'b': 6, 'c': 6}
>>> d2.update(b='a')
>>> d2
{'b': 'a', 'c': 6}
④复制
参考list
5.4 集合set
天生去重,元素必须是可hash对象,set和dict唯一的区别是没有存储对应的values,简要的说可哈希的数据类型,即不可变的数据结构(数字类型(int,float,bool)字符串str、元组tuple、自定义类的对象)。
>>> s1={1,1,2,2,3,4}
>>> s1
{1, 2, 3, 4}
①增加add;updeate 需要为可迭代对象
>>> s1.add(5)
>>> s1
{1, 2, 3, 4, 5}
>>> s1.update("abc")
>>> s1
{1, 2, 3, 4, 5, 'b', 'a', 'c'}
②删除remove和discard
>>> s1
{1, 2, 3, 4, 5, 'b', 'a', 'c'}
>>> s1.remove("a")
>>> s1
{1, 2, 3, 4, 5, 'b', 'c'}
>>> s1.discard(1)
>>> s1
{2, 3, 4, 5, 'b', 'c'}