Python基础知识(python3) part1
一、python是什么?
Python 是一种面向对象的解释型语言,交互式解释器。采用空白符作为缩进,因为有强大的库,被称为胶水语言(可以把其他语言制作模块轻松结合在一起)。
二、Python 8个关键要素
数据类型、综合数据类型、输入输出、逻辑操作符、控制流语句、算数操作符、函数、对象引用。
三、数据类型
3.1与数据类型相关内容,标识符(变量)和关键词。
3.1.1标识符(3点,第一点第一个字符为字母或_下划线;第二点其他部分字母数字下划线组成;第三点区分大小写)
3.1.2 关键词-33个
算数 |
引入 |
异常 |
控制 |
操作与状态 |
返回退出 |
定义 |
and |
import |
except |
while |
del |
return |
lambda |
or |
as |
try |
if |
assert |
yield |
class |
in |
from |
finally |
else |
True |
continue |
def |
is |
raise |
elif |
False |
pass |
global |
|
not |
with |
for |
None |
break |
nonlocal |
3.2与数据类型相关内容,运算符与表达式
运算符 |
描述 |
|
lambda |
Lambda表达式 |
|
or |
布尔类型:或 |
|
and |
布尔类型:与 |
|
in,not in |
成员测试,即包含性测试 |
|
is,not is |
同一性测试,是不是一个类型 |
|
<,<=,>,>=,==,<> |
比较 |
|
** |
指数 |
|
| |
按位或 |
按位或运算符“|”是双目运算符。其功能是参与运算的两数各对应 的二进位相或。只要对应的二个二进位有一个为1时,结果位就为1。参与运算的两个数均以补码出现。 |
^ |
按位异或 |
其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。参与运算数仍以补码出现。 |
& |
按位与 |
双目运算符,其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1 ,否则为0。 |
<<,>> |
移位 |
|
~ |
按位反转 |
~x=-(x+1) |
+,- |
加减或正负 |
|
*,/ |
乘除 |
|
% |
取余 |
3.3 number数据类型
3.3.1整型int(Python3取消long即长整型)
3.3.2浮点数float/double(科学计算法e)
3.3.3 复数complex 即a+bj 方法complex(1,2)=1+2j 前一个代表实部,后一个代表虚部。
3.3.4布尔bool,特殊的整型,共两个值True和False。
3.3.5数据类型的其他
3.3.5.1 进制及其转换
二进制 |
0bM二进制数。 零,字母b(不分大小写),M为0~1的数字, |
其他进制转换成二进制的方法: bin() (全部小写) |
八进制 |
0oM八进制数。 零,字母o(不分大小写),M为0~7的数字, |
其他进制转化成八进制方法: oct()(全部小写,字母o) |
十六进制 |
0XM(M:0~F) 16进制数。 零,字母x(不分大小写),M为0~9、a、b、c、d、e、f, |
其他进制转化成十六进制方法: hex() (全部小写) |
3.3.5.2浮点数的精度问题:精度获取decimal
https://www.cnblogs.com/ShaYeBlog/p/7646649.html
decimal(获取浮点数的详细精度值)
from decimal import *
decimal()
round()近似于四舍五入 round(x,y)为数值,只填x的时候,y默认为0,即保留的小数点位数为零。
花时间完善这部分内容
3.4 string数据类型
3.4.1字符串的说明
a、字符串是字符的序列,字符串是不可变的。即不能对字符串中的某一项进行修改。
其修改只能通过切片,加拼接的方式进行重新赋值。A=a[0:2]+’d’+a[-1],’d’为要修改的字符。
b、 三种引号的区别 (单引号’,双引号’’,三引号’’’,都是成对的用)
c、转义符 \,将有特殊含义的字符转义。
3.4.2常用的字符串操作方法
说明max(string)、min(string)是函数,注意:函数,即 函数1(内容);方法,什么东西.方法1(可 以有形参))
❶字符串,首字母的大写
string.capitalize() 例如’abc’..capitalize() 输出Abc
❷字符串居中,设定宽度(使用空格去填充使字符串居中)
String.center(x),x为字符串指定的宽度。
❸计算字符串中某一个字符的数量
String.count(str,begin=0,end=len(string))
String为字符串,str为目标字符,begin为寻找的起始位置,end可以为len(string),默认begin=0,end=len(string))整个字符串长度。
例如’hallo’.count(‘l’)为2
❹ 查找子串所在的索引,没找到返回-1,不报错。
String.find(str,begin=0,end=len(string))
❺ 查找子串所在的索引,没找到返回异常,报错。
String.index(str,begin=0,end=len(string))
❻ 检测字符串是否是某个字符或者某个子串结尾
String.endswith(str,begin=0,end=len(string))
返回Ture或False
❼ max(string)、min(string)返回最大字母或最小---这个是函数
❽去除两端的空格(指定的内容obj,obj默认是空格)
String.strip(obj)
例如:’//sh//’.strip(‘/’) 返回sh
❾string中str2替换str1,num指定替换次数(默认str1出现的次数)
String.replace(str1,str2,num)
结合方法3,String.count(str,begin=0,end=len(string))。
3.4.3字符串的基本操作
* |
重复输出字符串 |
例如Print’*’*3)=*** |
+ |
字符串拼接 |
|
[] |
索引取出字符 |
|
in |
子串包含的判断 |
3.4.4注释
Python没有多行注释,只有单行注释#(ctrl+?),那如何实现一个多行注释的效果呢?
三引号,三引号里面的内容会保留所有的格式,加上三引号后就成一个字符串了,没人去接收,没有什么含义就达到了注释的效果。
四、综合数据类型
综合数据类型,又叫数据结构,即数据以什么形式进行存储。
综合数据类型,含list列表、tuple元祖、sets集合、dictionary字典,其中列表、元祖以及字符串都是序列,序列有什么特点呢?
序列有两个主要的特点:
a、索引操作符 [0]
b、切片操作符 [0:3:1] 。 切片可以正向、反向取,注意前闭后开的索引取值,所谓的前后是相对于切片的方向而言的,里面的参数依次是切片的起始,终止参数,步长。
做切片要注意区间范围,是一个包含关系。
4.1列表list(),方括号[]去定义。
List是处理一组有序项目的的数据结构,即你可以在一个列表中存储一个序列的项目。
与字符串一样,列表可以被索引和切片。
list 中的元素是可以被改变的
4.1.1列表的常规操作
a、访问列表中的值 例如list[0]
b、更新列表..........采用切片,例如切片list=list[0:3]+’b’;改变元素list[2]=list[0]*list[1]
c、删除列表元素......例如删除整个列表del list1,删除列中中元素:del list1[0]
4.1.2列表函数及方法
❶增加元素,增加一个新元素,obj任意类型。
list.append(obj) 例如list1.append([1,2])
❷追加列表或序列,增加一个新列表,obj代表序列(列表、字符串)
list.extend(obj) 例如list1.extend([1,2])
❸len()函数,列表的长度
❹查询某个元素在列表中出现的次数
list1.count(obj)
❺查询列表中元素的索引下标
list.index((str,begin=0,end=len(list))
❻根据索引下标,删除列表中的元素
list.pop()
Pop()方法,括号中无参数默认是删除最后一个,而且会返回删除的元素
❼根据列表的元素,删除列表中的元素
List.remove()
remove()方法中,括号中的值为要删除的元素。删除不返回删除的值。
❽列表元素反向
list.reverse() 可以做回文数判断的事情。
❾列表排序
list.sort()
数字最小,接下来是字母,排序分很多种,这里是快速排序。
4.2元祖tuple()
元祖用圆括号()表示,元祖与列表类似,不同之处在于元祖的元素不能修改(字符串也是不能修改的,列表元素可修改)可以把字符串理解成元祖。
圆括号内多个序列,代表元祖。
注意tuple1=1,2,3,4与tuple1=(1,2,3,4)一样,注意列表不要省略了中括号[]。因为元祖是用逗号分隔的无关闭分隔符。
4.2.1元祖的常规操作
访问元祖 |
索引,tuple1[0]的方式访问元祖中的元素。 |
修改元祖 |
拼接,tuple3=tuple1+(1,2) |
删除元祖 |
只能全删del tuple1,因为元祖的元素不能修改。 |
无关闭分隔符 |
以逗号分隔,可以不要圆括号, 例如1,2,3 默认是(1,2,3)也是一个 元祖,定义元祖可以不加括号。 |
4.2.2元祖的内置函数
❶列表可以转换成元祖。-----tuple(list1)
❷元祖转换成列表-----通过循环遍历,将元祖中的每一项存到列表中去。
4.3 字典dictionary{‘x’:’y’}
字典是另一种可变容器模型,且可存储任意类型对象。(list列表也是可变容器模型)
特点:可以设置索引值,索引值可以自定义。常见的作为索引,比如字符串,作为键值,对象不可以作为索引。
字典是花括号定义的。每个键值对用冒号分隔,键值对之间通过逗号进行分隔。
整个字典包裹在花括号之中的。
4.3.1字典的常规操作
访问字典里的值 |
dict1[‘键’] 例如dict1[‘username’] |
修改字典 |
直接修改,例如dict1[‘username’]=’杨幂’ |
删除字典元素 |
-del dict1[‘username’] 删除的是键值对。 |
增加元素 |
列表是不可以直接添加元素,字典可以,例如:dict1[‘age’]=8 添加键值对或覆盖键值。 |
4.3.2字典键的特性
a、不允许同一个键出现多次,以最后一个值为准。例如dict1={‘a’:1,’a’:2}输出dict1={‘a’:2}
b.键不可变,所以可以为数字、字符串、元祖,但是不能为列表,列表为可变容器。
tuple2=(1,2,3)
tuple2=[1,2,3]
dict2={tuple2[0]:1,tuple2[1]:2}都行,但是如果是dict2={tuple2:1}那么列表是不行的。
4.3.3字典内置函数及方法
❶删除字典元素
a、清空字典,保留字典的空间。
dict1.clear()
b、删除字典,不保留字典空间。
del dict1
★★❷浅复制
dict.copy()
(深拷贝一级目录,更深级的目录采用引用方式(拷贝指针))这里需要注意的是字典和列表的修改后的物理位置的问题。
https://www.cnblogs.com/Eva-J/p/5534037.html
❸创建一个新字典,以序列seq中元素作为字典键,val为所有键的默认值。
dict1 .fromkeys(seq[val]) 方括号[]代表选填。
例如dict1={‘a’:1}
dict2=dict1 .fromkeys(‘hello’[0]) 为{‘h’:0,’e’:0,’l’:0,’l’:0,’o’:0} 与dict1没有关系,只是借助dict1的字典方法。
★★★❹返回指定的键的值
如果键不存在,返回default值,这个以后经常用到。
dict1.get(key,default) 即是没有这个键也不会产生异常,不会影响程序的运行,建议使用这个方法。
❺判断某个键是否存在
dict1.has_key(key1) 返回True或False
❻以列表形式返回所有的键名。
dict.keys() 注意是keys
❼以列表的形式返回可遍历的(键值)元祖数组。注意键值对,是键、值得匹配对。
dict1.items()
❽以列表的形式返回所有的值
dict1.values()
★❾get()升华版,假如键不存在,则增加键设置值为default,如果存在的话就返回原来键对应的值,且原来的值不做修改。
dict1.setdefault(key,default)
dict1.setdefault(‘b’,’cctv’)
❿字典2追加到字典1中,并且执行更新操作。(先追加再更新,字典的键只可能有一次,并以最后的一个为准)
dict1.update(dict2)
4.4 集合set()
集合和字典是类似的,它是一组key的集合,但是不存储value。
集合的特性就是key不能重复,与字典一样。重复了只能算一个。
注意集合无序。字典也是无序的。
4.4.1集合的操作
创建集合 |
Set1={1,2,3...} |
转化为集合 |
set() 列表转集合:set(list) ,另外元祖也可以转化成集合采用set(tuple),注意元祖转化的时候包圆括号。Set(1,2,3)报错,set((1,2,3))就可以了。 字符串可转换成集合set(string)),另外字典转换元祖后只有key值。 Num不可转换成集合。列表的转集合一定要有[]包裹。 |
遍历集合 |
for 通过索引是得不到它的元素,不能像字符、列表、字典被索引,但是可以采用遍历的方法,for i in set1 |
添加元素 |
set.add(obj) obj为任意类型 |
删除元素 |
set.remove(obj), obj为集合中你想删除的元素。 |
★★★★交集/并集/差集 &交集,|并集,-差集 |
&交集,| 并集, - 差集 定义s1={1,2,3,4},s2={3,6,9} &交集,例如s1&s2输出{3}} -差集,例如s1-s2 输出{1,2,4} |并集,例如s1|s2 输出{1,2,3,4,6,9} 跟算法有关系,经常把列表编程集合。 |
五、输入输出
5.1输入input()函数
通过input得到的数据都是字符型,
可以通过eval()函数自动转换成相应的数据类型,注意使用eval()后,输入的字符串时加引号。
5.2 输出print()函数、format()方法。
format()方法如下:
a=’{}年{}月{}日’.format(2018,5,3) 其中{}是占位符,{}中未空值的时候,format()中的参数会依次赋值给前面的{}。当然可以通过在{}中添加format()中的索引值来被赋值。
format()科学计算法
例如format(1000,’2e’)
在sql注入的时候会用到format()方法输出。
5.3格式化输出
整型
%o —— 八进制
%x —— 十六进制
%f 浮点数
%s 字符串
%e 科学计数法
例如a=’%s’%n 注意n与%s类型对应。
例如.2f 小数点保留两位
例如3.2f 小数点保留两位,数的长度设定为3, 做99乘法表好看。
例如-3.2f 小数点保留两位,数的长度设定为3,左对齐。
例如03.2f 小数点保留两位,数的长度设定为3,不足的位数用0表示。