目录
一、数据类型
二、条件判断
三、循环
四、函数
五、模块
六、数据结构
七、踩过的坑
一、数据类型
python中的数据类型主要有五大类:数值、布尔、字符串、容器、None。
1.数值
- python3支持int、float、bool、complex,int就表示长整型,没有long这种东西。
- type()函数可以用来查询变量所对应的数据类型,比如说:a = 1;print(type(a))
- 数值计算就那些,值得注意的是除法有两种,分别为’/‘和’//',前者会返回一个浮点数,后者返回一个整数,比如2/4,前者返回0.5,后者返回0;混合计算时,会将整型转化为浮点数;
- 复数可以表示为a+bi,也可以为complex(a,b),a和b都是浮点型;
#数值—整型
age = 23
#数值—浮点型
weight = 55.5
2.布尔
布尔值有两个,分别为TRUE和FALSE,常用于条件判断中。
表达式成立返回TRUE,否则返回FALSE。
3.字符串
- 用单引号或双引号括起来
- python中的字符串无法改变,和C不同
- 从前往后索引从0开始,从后往前索引从-1开始;
- '+‘是字符串连接符,’*'可以用来让字符串重复输出;
- py没有单独的字符类型,一个字符就是长度为1的字符串;
Str1 = '今年是2018年'
Str2 = '不是8102年'
Str3 = Str1 + ',' + Str2
print(Str3)
今年是2018年,不是8102年
也可以使用格式化输出,比如:
#用%进行格式化输出
Str = '我叫%s,我今年%d岁了'%('止水',23);
print(Str)
我叫止水,我今年23岁了
4.容器
python中有四种容器,分别为列表、元组、集合和字典。对于容器来说需要掌握其定义和操作的方法(增、删、查、改)。
(1)列表
- 列表相当于C语言中的数组,但其内部可以存放不同类型的数据;
- 可以被索引和截取,索引值正向从0开始,负向从-1开始;
- '+‘是列表连接运算符,’*'是重复操作;
- 列表中的元素可以改变
#容器—列表
#定义
nameList = ['科比','麦迪','姚明','霍华德']
nameLen = len(nameList)
print('列表长度为:',nameLen)
#列表操作
#1.增加
nameList.append('杜兰特')
print('增加了一个元素:',nameList)
#2.删除
del nameList[2]
print('删除第三个元素:',nameList)
#3.查询
name1 = nameList[0]
print('查询的元素为:',name1)
#4.修改
print('修改前的第二个元素为:',nameList[1])
nameList[1] = '乔丹'
print('修改后的第二个元素为:',nameList[1])
列表长度为: 4
增加了一个元素: [‘科比’, ‘麦迪’, ‘姚明’, ‘霍华德’, ‘杜兰特’]
删除第三个元素: [‘科比’, ‘麦迪’, ‘霍华德’, ‘杜兰特’]
查询的元素为: 科比
修改前的第二个元素为: 麦迪
修改后的第二个元素为: 乔丹
(2)元组
- 元组属于不可变对象,所以一旦被定义就不能修改,所以不能进行增、删、改的操作;
- 元组也可以被索引、切片,方法和列表相同;
- 构造包含0个或1个元素的元组比较特殊,这里我们有特殊的定义:tuple = ();空元组 tuple2 = (1,)包含一个元素的元组需要在后面加一个逗号
#容器—元组
#定义
nameTuple = ('萌萌','老朱','宸宸')
print(nameTuple)
nameLen = len(nameTuple)
print('元组长度为:',nameLen)
#不能进行增删改
#查找
name = nameTuple[1]
print('第二个人名字叫:',name)
(‘萌萌’, ‘老朱’, ‘宸宸’)
元组长度为: 3
第二个人名字叫: 老朱
(3)集合
- 基本功能是进行成员关系测试和删除重复元素;
- 集合是无序的;
- 使用{}或set()函数创建,创建空集合不能使用{},只能用set(),因为前者是用来创建了一个空字典;
- 用set创建集合,比如set(‘boy’),那么boy会拆分成b o y三个字母进行插入,并且不会重复插入;
- set还可以进行集合运算
#容器—集合
#定义(会自动删除重复的元素)
teamSet = {'湖人','马刺','雷霆','勇士','快船','热火','湖人'}
print(teamSet)
#集合操作
#1.添加
teamSet = set() #定义空集合
teamSet.update(['Tencent','Alibaba','Baidu'])
print(teamSet)
teamSet.update(['Facebook','Google'])
print(teamSet)
#2.删除—discard
teamSet.discard('Baidu')
print(teamSet)
#3.查找
txbool = 'Tencent' in teamSet
print(txbool)
#4.修改——先删除,再添加
#因为集合是一组无序的值集合,无索引,不能进行切片和直接修改
{‘湖人’, ‘马刺’, ‘热火’, ‘勇士’, ‘快船’, ‘雷霆’}
{‘Tencent’, ‘Baidu’, ‘Alibaba’}
{‘Google’, ‘Baidu’, ‘Alibaba’, ‘Facebook’, ‘Tencent’}
{‘Google’, ‘Alibaba’, ‘Facebook’, ‘Tencent’}
True
(4)字典
- 字典是一种映射类型,字典用"{ }"标识,它是一个无序的**键(key) : 值(value)**对集合;
- 字典当中的元素是通过键来存取的,而不是通过偏移存取;
- 键(key)必须使用不可变类型(数字、字符串、元组);
- 键值必须唯一
#容器—字典
#定义
nameDic = {'001':'张萌','002':'老朱','003':'阿轲','004':'木兰'}
print(nameDic)
#字典操作
#1.添加
nameDic['005'] = '李白'
print(nameDic)
#2.删除
del nameDic['005']
print(nameDic)
#3.查询
name1 = nameDic['002']
print(name1)
#4.修改
nameDic['002'] = '小乔'
print(nameDic)
{‘001’: ‘张萌’, ‘002’: ‘老朱’, ‘003’: ‘阿轲’, ‘004’: ‘木兰’}
{‘001’: ‘张萌’, ‘002’: ‘老朱’, ‘003’: ‘阿轲’, ‘004’: ‘木兰’, ‘005’: ‘李白’}
{‘001’: ‘张萌’, ‘002’: ‘老朱’, ‘003’: ‘阿轲’, ‘004’: ‘木兰’}
老朱
{‘001’: ‘张萌’, ‘002’: ‘小乔’, ‘003’: ‘阿轲’, ‘004’: ‘木兰’}
5.None
None在python中是一种很特殊的量,它有属于自己的类型’NoneType’,判断一个值是否为空值,可以使用’is None’或’is not None’来判断。
is和’=='的区别
‘==’:表示二者的值相等;
is:表示二者指向同一个对象。
二、条件判断
- 基本形式为if…elif…else;
- 每个条件后面都要加冒号’:';
- 使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块;
- 在Python中没有switch – case语句;
- 可以嵌套
举例:
#条件判断
score = 9.0
if score > 8:
print('电影不错,值得一看')
else:
print('垃圾电影')
电影不错,值得一看
#多条件判断
age = int(input('请输入您的年龄:'))
if age < 18:
print('你还是未成年哟!')
elif age >= 18:
print('你长大了,孩子')
else:
print('你是人吗')
请输入您的年龄:6
你还是未成年哟!
三元表达式:
Python中的三元表达式允许你将一个if—else代码块联合起来,在一行代码或者一个语句中生成数据。
语法:
value = true-expr if condition else false-expr
这段代码等价于下面的代码:
if condition:
value = true-expr
else:
value = false-expr
三、循环语句
1.while语句
格式:
while <循环条件>:
<语句块>
2.for语句**(用的多)**
格式:
for i in <容器>
代码块
3.continue用于跳出当前循环,进入下一个循环判断中;break用于跳出整个循环语句,结束执行循环。
举例:
#循环语句
list1 = ['Sunday','Monday','Tuesday']
for i in list1:
print(i)
Sunday
Monday
Tuesday
gafataData = {'Tencent':'HK:00700','Alibaba':'baba','苹果':'Apple','谷歌':'Google','Facebok':'fb','亚马逊':'Amazon'}
for key,value in gafataData.items():
newValue = value.upper()
gafataData[key] = newValue
print(gafataData)
{‘Tencent’: ‘HK:00700’, ‘Alibaba’: ‘BABA’, ‘苹果’: ‘APPLE’, ‘谷歌’: ‘GOOGLE’, ‘Facebok’: ‘FB’, ‘亚马逊’: ‘AMAZON’}
四、函数
1.定义
- 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ();
- 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数;
- 函数内容以冒号起始,并且缩进;
- return [表达式]结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None
2.调用
方式:函数名(参数)
举例:
#函数
a = 1
b = 2
def add(x,y):
z = x + y
return z
print('结果为:',add(a,b))
结果为: 3
3.参数传递
对于不可变对象参数的传递,相当于值传递,并不会修改原值,而对于可变对象的传递,则是将本体传过去,实际的修改了。
举例:
#参数的传递
//当不可变对象作为参数进行传递时,其传递的只是它的副本,其自身的值是不会变化的
a = 5
def changenum(x):
x = 10
return x
b = changenum(a)
print(a,b)
5 10
#参数的传递
//传递的参数为可变对象时,传递的是其本体,其自身会发生变化
list = ['a','b','c']
def changelist(a):
a.append('d')
return a
list1 = changelist(list)
print(list)
print(list1)
[‘a’, ‘b’, ‘c’, ‘d’]
[‘a’, ‘b’, ‘c’, ‘d’]
4.参数
(1)必须参数
- 必需参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样
(2)关键字参数
- 函数调用使用关键字参数来确定传入的参数值
5.变量的作用域
变量简单来说可以分为局部变量和全局变量。
局部变量只能在定义该变量的函数内部访问,而全局变量可以在整个程序中进行访问。
global+变量名可以声明该变量为全局变量。
五、模块
Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。
模块让你能够有逻辑地组织你的 Python 代码段,把相关的代码分配到一个模块里能让你的代码更好用,更易懂。
模块能定义函数,类和变量,模块里也能包含可执行的代码。
1.python内置模块
引入模块:import 模块名称
使用模块中的函数和属性(变量):from 模块名 import 函数名
包是若干模块的集合。
2.第三方模块
3.模块使用总结
(1)import 包名称
(2)import 包名称 as 别名
(3)from 包名称 import 函数名
举例:
#模块
#导入模块
import sys
#使用模块中的属性或函数
path = sys.path
print(path)
[‘’, ‘C:\\Anaconda\\anaconda\\envs\\py3\\python36.zip’, ‘C:\\Anaconda\\anaconda\\envs\\py3\\DLLs’, ‘C:\\Anaconda\\anaconda\\envs\\py3\\lib’, ‘C:\\Anaconda\\anaconda\\envs\\py3’, ‘C:\\Anaconda\\anaconda\\envs\\py3\\lib\\site-packages’, ‘C:\\Anaconda\\anaconda\\envs\\py3\\lib\\site-packages\\IPython\\extensions’, ‘C:\\Users\\tycyx\\.ipython’]
import pandas as pd
import xlrd
fileNameString = 'C:\病历数据\病历数据.xlsx'
x1 = pd.ExcelFile(fileNameString)
patientDf = x1.parse('Sheet1')
print(patientDf)
病人编号 姓名 年龄 糖尿病类型 病情
0 1 猴子 29 1型糖尿病 较差
1 2 马云 34 2型糖尿病 好转
2 3 王健林 28 1型糖尿病 显著好转
3 4 马化腾 52 2型糖尿病 较差
六、数据结构
collections是python内建的一个集合模块,它提供了很多有用的集合类。这里介绍其中的几种数据结构:
1.双向列表(deque)
传统的List存储数据采用的是线性存储方式,一旦数据量很大,那么插入和删除元素效率就会很低,所以有了deque,它适用于队列和栈。
队列:FIFO
栈:先进后出
(1)队列的实现
#队列
#导入deque类
from collections import deque
#定义一个队列为双向列表
queue =deque(['01','02','03','04','05'])
print(queue)
#入队操作
queue.append('06')
print(queue)
#出队操作,删除队列头部的元素
queue.popleft()
print(queue)
deque([‘01’, ‘02’, ‘03’, ‘04’, ‘05’])
deque([‘01’, ‘02’, ‘03’, ‘04’, ‘05’, ‘06’])
deque([‘02’, ‘03’, ‘04’, ‘05’, ‘06’])
(2)栈的实现
#栈
#导入deque类
from collections import deque
#定义一个栈
stack = deque(['知乎动态','知乎回答','知乎文章'])
print(stack)
#入栈
stack.appendleft('知乎专栏')
print(stack)
#出栈
stack.pop()
print(stack)
deque([‘知乎动态’, ‘知乎回答’, ‘知乎文章’])
deque([‘知乎专栏’, ‘知乎动态’, ‘知乎回答’, ‘知乎文章’])
deque([‘知乎专栏’, ‘知乎动态’, ‘知乎回答’])
2.排序字典(OrderedDict)
前面所说的字典中,键(key)是无序的,我们可以用排序字典将字典变成一个有序字典,顺序是按照插入的顺序进行排列,而非对键(key)值进行排序。
#排序字典
#导入OrderDict类
from collections import OrderedDict
#定义一个字典
od = OrderedDict([('a', 1), ('b', 2), ('c', 3)])
print(od)
OrderedDict([(‘a’, 1), (‘b’, 2), (‘c’, 3)])
上面的结果是有序的。
3.计数器(Counter)
实现计数功能,比如统计单字出现的次数。
#计数器
#导入Counter类
from collections import Counter
#统计每个字出现的次数
cDict = Counter('知乎专栏知乎动态知乎回答')
print(cDict)
#统计出现最多的三个字
cDict.most_common(3)
Counter({‘知’: 3, ‘乎’: 3, ‘专’: 1, ‘栏’: 1, ‘动’: 1, ‘态’: 1, ‘回’: 1, ‘答’: 1})
Out[12]:
[(‘知’, 3), (‘乎’, 3), (‘专’, 1)]
七、踩过的坑
整体学习下来还算顺利,在导入excel表数据的时候遇到了问题,显示找不到xlrd模块。后来查资料发现这是一个读取excel文件的模块,我以为pandas包里包含了,于是重新通过conda进行xlrd模块的安装,顺利解决了问题。
关于Python学习指南
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程。带你从零基础系统性的学好Python!
👉Python所有方向的学习路线👈
Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取)
👉Python学习视频600合集👈
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
温馨提示:篇幅有限,已打包文件夹,获取方式在:文末
👉Python70个实战练手案例&源码👈
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
👉Python大厂面试资料👈
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
👉Python副业兼职路线&方法👈
学好 Python 不论是就业还是做副业赚钱都不错,但要学会兼职接单还是要有一个学习规划。
👉 这份完整版的Python全套学习资料已经上传,朋友们如果需要可以扫描下方CSDN官方认证二维码或者点击链接免费领取【保证100%免费
】