学习笔记之第2章 Python基础知识(二)

第2章 Python基础知识

2.1 Python是什么

  • Python语言的语法简单、容易上手,它有很多现成的库可以供你直接调用,以满足你在不同领域的需求。Python在数据分析、机器学习及人工智能等领域,受到越来越多编程人士的喜欢,也正因为如此,在2018年7月的编程语言排行榜中,Python超过Java成为第一名

2.2 Python的下载与安装

下面是之前我写的Python安装教程(Anaconda),如果需要安装python软件的可以按照下面这个链接进行

安装教程

2.2.1 安装教程

  • Step1:查看电脑的系统类型是32位操作系统还是64位操作系统,如下图所示,选择的是64位操作系统
  • Step2:进入官网(https://www.anaconda.com),单击右上角的Download按钮,如下图所示。
  • Step3:根据电脑系统类型(Windows/macOS/Linux)选择对应的软件类型
  • Step4:选择Python版本。因为在2020年之后官方就不再支持Python 2了,所以建议大家选择Python 3,本书的代码也是基于Python 3的,然后根据电脑的操作系统位数(32Bit/64Bit)选择对应版本
  • Step5:下载后保存到电脑里,如下图所示。因为是国外的网站,再加上文件比较大,所以下载速度会比较慢,大家也可以去我的百度云下载,百度云地址是https://pan.baidu.com/s/1TrDsc1OrQWa4OanEm5qJPA。
  • Step6:双击安装包打开后进行安装
  • Step7:安装路径选择默认路径即可,不需要添加环境变量,然后单击Next按钮,并在弹出的对话框中勾选相应选项即可。
  • Step8:等待下载完成后,继续单击 Next按钮
  • Step9:单击并勾选如下图所示按钮。
  • Step10:完成上述操作后在电脑开始界面就会看到如下图左侧所示的几个新添加的程序,这就表示Python已经安装好了,单击Jupyter Notebook打开,会弹出一个黑框(如下图右侧所示),按Enter键后会让你选择用哪个浏览器打开,建议选择Chrome浏览器。
  • Step11:当你看到如下图所示界面时,表示环境已经配置好了。

2.2.2 IDE与IDLE

  • IDE是英文单词Integrated Development Environment的缩写,表示集成开发环境。集成开发环境是用于提供程序开发环境的应用程序,该程序一般包括代码编辑器、编译器、调试器和图形用户界面等工具。IDE包含了程序编写过程中要用到的所有工具,所以我们一般在编写程序的时候都会选择用IDE。

2.3 介绍Jupyter Notebook

2.3.1 新建Jupyter Notebook文件

  • 打开Jupyter Notebook后单击右上角的New按钮,在下拉列表中选择Python 3选项来创建一个Python文件,也可以选择Text File选项来创建一个.txt格式的文件

2.3.2 运行你的第一段代码

  • 在代码框中输入一段代码print(“hello world”),然后单击Run按钮,或者按Ctrl+Enter组合键,就会输出hello world,这就表示你的第一段代码运行成功了。当你想换一个代码框输入代码时,你可以通过单击左上角的“+”按钮来新增代码框。

2.3.3 重命名Jupyter Notebook文件

  • 当新建一个Jupyter Notebook文件时,该文件名默认为Untitled(类似于Excel中的工作簿),你可以单击File>Rename对该文件进行重命名

2.3.4 保存Jupyter Notebook文件

  • 方法一,单击File>Save and Checkpoint保存文件,但是这种方法会将文件保存到默认路径下,且文件格式默认为ipynb,ipynb是Jupyter Notebook的专属文件格式。
  • 方法二,选择Download as选项对文件进行保存,它相当于Excel中的“另存为”,你可以自己选择保存路径及保存格式

2.3.5 导入本地Jupyter Notebook文件

2.3.6 Jupyter Notebook与Markdown

  • Jupyter Notebook的代码框默认是code模式的,即用于编程的

2.3.7 为Jupyter Notebook添加目录

  • Step1:在Windows搜索框中输入Anaconda Prompt并单击打开

  • Step2:输入 pip install jupyter_contrib_nbextensions 然后按 Enter 键运行,安装jupyter_contrib_nbextensions模块

  • Step3:程序运行中途会出现 y/n 的选项,输入 y 并按 Enter 键运行,直到出现Successfully installed的提示

  • Step4:在Step3的基础上继续输入jupyter contrib nbextension install --user然后按Enter键进行用户配置

  • Step5:等Step4完成以后,打开Jupyter Notebook会看到界面上多了Nbextensions选项卡

  • 单击Nbextensions选项卡打开,勾选Table of Contents(2)复选框
    在这里插入图片描述

  • Step6:这个时候打开一个已经带有目录的ipynb文件,就会看到主界面多了一个方框内的按钮(如下图所示),但是仍然没有目录。

  • 按下图右上角方框内的按钮,目录就会显示出来了
    在这里插入图片描述

2.4 基本概念

2.4.1 数

  • 数就是日常生活中用到的数字,Python中比较常用的就是整数和浮点数两种
  • 在这里插入图片描述

2.4.2 变量

  • 变量名和我们起名字一样,是有一定讲究的,Python中定义变量名时,需要遵循以下原则。
    • 变量名必须以字母或下画线(_)开始,名字中间只能由字母、数字和下画线组成。
    • 变量名的长度不得超过255个字符。
    • 变量名在有效的范围内必须是唯一的。
    • 变量名不能是Python中的关键词。
  • Python中的关键词如下所示
    在这里插入图片描述

2.4.3 标识符

  • 标识符是用来标识某样东西名字的,在Python中用来标识变量名、符号常量名、函数名、数组名、文件名、类名、对象名等的。
  • 标识符的命名需要遵循的规则与变量名命名遵循的规则一致

2.4.4 数据类型

  • Python中的数据类型主要有数和字符串两种,其中数包括整型和浮点型。
  • 我们可以使用type()函数来查看具体值的数据类型。
type(1)
type(1.0)

2.4.5 输出与输出格式设置

  • 在Python中我们利用关键词print进行输出。
print("hello world")
  • 有的时候需要对输出格式做一定的设置,可以使用str.format()方法进行设定。
  • 其中str是一个字符串,将format里面的内容填充到str字符串的{}中,几种常用的主要形式如下所示。
#一对一填充
print("我正在学习:{}".format("python数据分析"))

#多对多填充
print("我正在学习:{}中的{}".format("python基础知识","python数据分析"))

#浮点数设置
print("{}约{:.2f}亿".format("2018年中国单身人口",2))

#百分数设置
print("中国男性占总人口的{:.2%}".format(0.519))
  • 输出结果
我正在学习:python数据分析
我正在学习:python基础知识中的python数据分析
2018年中国单身人口约2.00亿
中国男性占总人口的51.90%

2.4.6 缩进与注释

  • 缩进:把代码的行首空白部分称为缩进,缩进的目的是为了识别代码块,即让程序知道该运行哪一部分
  • 注释对代码起到说明的作用,并不真正运行。单行注释以#开头
  • 多行注释可以用多个#、’’’或者"""实现

2.5 字符串

2.5.1 字符串的概念

  • 字符串是由零个或多个字符组成的有限串行,是用单引号或者双引号括起来的,符号是str(string的缩写)
  • 下面这些都是字符串
"hello world"
"黄桃罐头"
"橘子罐头"
"python"
"123"

2.5.2 字符串的连接

  • 直接使用操作符+就可以将两个或者两个以上的字符串进行连接。
"hello"+"world"
  • 输出结果
'helloworld'

2.5.3 字符串的复制

  • 使用操作符*对字符串进行重复
"python真强大"*3
  • 输出结果
'python真强大python真强大python真强大'

2.5.4 获取字符串的长度

  • 利用len()函数来获取字符串长度。
len("123123121")
  • 输出结果
9

2.5.5 字符串查找

  • 字符串查找是指查找某一个字符串是否包含在另一个字符串中
  • 用in或者not in这两种方法均可实现。
print("测试" in "新产品上线测试号")
print("测试" in "正常账号")
  • 输出结果
True
False
  • 除了in和not in,还可以用find,当用find查找某一字符是否存在于某个字符串中时,如果存在则返回该字符的具体位置,如果不存在则返回-1
"Abc".find("c")
  • 输出结果
2
  • 注意,因为在Python中位置是从0开始数的,所以第3位就是2

2.5.6 字符串索引

  • 字符串索引是指通过字符串中值所处的位置对值进行选取。需要注意的是字符串中的位置是从0开始的。
a = "python数据分析"

#获取字符串中第1位的值
print(a[0])

#获取字符串中第4位的值。
print(a[3])

#获取字符串中第2位到第4位之间的值,且不包含第4位的值
print(a[1:3])

#获取字符串中第1位到第4位之间的值,且不包含第4位的值,第1位可以省略不写。
print(a[:3])

#获取字符串中第7位到最后一位之间的值,最后一位可以省略不写。
print(a[6:])

#获取字符串中最后一位的值
print(a[-1])
  • 输出结果
p
h
yt
pyt
数据分析
析
  • 我们把上面这种通过具体某一个位置获取该位置的值的方式称为普通索引;把通过某一位置区间获取该位置区间内的值的方式称为切片索引

2.5.7 字符串分隔

  • 字符串分隔是先将一个字符用某个分隔符号分开,然后将分隔后的值以列表的形式返回,用到的是split()函数。
#"a:b:c"字符串是以:分隔的,将字符串按照:拆分出来
"a:b:c".split(":")

#这种分隔符就不是|,故拆分不对
"a|b|c".split(":")
  • 输出结果
['a', 'b', 'c']
['a|b|c']

2.5.8 移除字符

  • 移除字符用到的方法是 strip()函数,该函数用来移除字符串首尾的指定字符,默认移除字符串首尾的空格或换行符
#移除空格
print(" a ".strip(" "))

#移除换行符
print("\ta\t ".strip("\t"))

#移除A
print("AaA".strip("A"))
  • 输出结果
a
a	 
a

2.6 数据结构——列表

2.6.1 列表的概念

  • 列表(list)是用来存储一组有序数据元素的数据结构,元素之间用逗号分隔
  • 列表中的数据元素应该包括在方括号中,而且列表是可变的数据类型,一旦创建了一个列表,你可以添加、删除或者搜索列表中的元素。
  • 在方括号中的数据可以是 int型,也可以是str型。

2.6.2 新建一个列表

  • 新建列表的方法比较简单,直接将数据元素用方括号括起来就行
#当方括号中没有任何数据元素时,列表就是一个空列表
null_list = []

#当方括号的数据元素全部为int类型时,这个列表就是int类型列表。
int_list = [1,2,3]

#当方括号中的数据元素全部为str类型时,这个列表就是str类型列表。
str_list = ["a","b","c"]

#当方括号中的数据元素既有int类型,又有str类型时,这个列表就是int+str类型列表。
int_str_list = [1,2,3,"a","b","c"]

2.6.3 列表的复制

  • 列表的复制和字符串的复制类似,也是利用*操作符。
print(int_list*2)
print(str_list*2)
  • 输出结果
[1, 2, 3, 1, 2, 3]
['a', 'b', 'c', 'a', 'b', 'c']

2.6.4 列表的合并

  • 列表的合并就是将两个现有的list合并在一起,主要有两种实现方式,一种是利用+操作符,它和字符串的连接一致;另外一种用的是extend()函数。
#直接将两个列表用+操作符连接即可达到合并的目的,列表的合并是有先后顺序的。
print(int_list+str_list)

#将列表B合并到列表A中,用到的方法是A.extend(B),将列表A合并到列表B中,用到的方法是B.extend(A)。
int_list.extend(str_list)

print(int_list)#使用extend后,int_list会改变
print(str_list)
  • 输出结果
[1, 2, 3, 'a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c']
[1, 2, 3, 'a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c']
['a', 'b', 'c']

2.6.5 向列表中插入新元素

  • 列表是可变的,也就是当新建一个列表后你还可以对这个列表进行操作,对列表进行插入数据元素的操作主要有append()和insert()两个函数可用。
  • 这两个函数都会直接改变原列表,不会直接输出结果,需要调用原列表的列表名来获取插入新元素以后的列表。
#函数append()是在列表末尾插入新的数据元素。
int_list = [1,2,3]
int_list.append(4)
int_list
  • 输出结果
[1, 2, 3, 4]
#函数insert()是在列表的指定位置插入新的数据元素
int_list = [1,2,3]
int_list.insert(2,10)
int_list
  • 输出结果
[1, 2, 10, 3]

2.6.6 获取列表中值出现的次数

  • 利用count()函数获取某个值在列表中出现的次数。
score_list = [99,98,92,96,92,94]
score_list.count(92)
  • 输出结果
2

2.6.7 获取列表中值出现的位置

  • 获取值出现的位置,就是看该值位于列表中的哪里
sale_list = ["小红","小明","小小","小黄"]
sale_list.index("小小")
  • 输出结果
2

2.6.8 获取列表中指定位置的值

  • 获取指定位置的值利用的方法和字符串索引是一致的,主要有普通索引和切片索引两种。
#普通索引是获取某一特定位置的数
v = ["a","b","c","d","e"]
print(v[0])
print(v[3])

#切片索引是获取某一位置区间内的数
print(v[:2])
print(v[3:])
  • 输出结果
a
d
['a', 'b']
['d', 'e']

2.6.9 删除列表中的值

  • 对列表中的值进行删除时,有pop()和remove()两个函数可用
#pop()函数是根据列表中的位置进行删除,也就是删除指定位置的值。
str_list = ["a","b","c","v"]
str_list.pop(2)
print(str_list)

#remove()函数是根据列表中的元素进行删除,也就是删除某一元素。
str_list.remove("a")
print(str_list)
  • 输出结果
['a', 'b', 'v']
['b', 'v']

2.6.10 对列表中的值进行排序

  • 对列表中的值排序利用的是sort()函数,sort()函数默认采用升序排列。
s = [1,23,34,12]
s.sort()
s
  • 输出结果
[1, 12, 23, 34]

2.7 数据结构——字典

2.7.1 字典的概念

  • 字典(dict)是一种键值对的结构,类似于通过联系人姓名查找地址和联系人详细情况的地址簿,即把键(名字)和值(详细情况)联系在一起。
  • 注意,键必须是唯一的,就像如果有两个人恰巧同名,那么你无法找到正确的信息一样。
  • 键值对在字典中以{key1:value1,key2:value2}方式标记。注意,键值对内部用冒号分隔,而各个对之间用逗号分隔,所有这些都包括在花括号中。

2.7.2 新建一个字典

test_dic = {}
test_dic["张三"] = 13313581900
test_dic["李四"] = 15517896750
test_dic
  • 输出结果
{'张三': 13313581900, '李四': 15517896750}

2.7.3 字典的keys()、values()和items()方法

#keys()方法用来获取字典内的所有键。
print(test_dic.keys())

#values()方法用来获取字典内的所有值。
print(test_dic.values())

#items()方法用来得到一组组的键值对。
print(test_dic.items())
  • 输出结果
dict_keys(['张三', '李四'])
dict_values([13313581900, 15517896750])
dict_items([('张三', 13313581900), ('李四', 15517896750)])

2.8 数据结构——元组

2.8.1 元组的概念

  • 元组(tup)虽然与列表类似,但也有不同之处,元组的元素不能修改;元组使用小括号,而列表使用中括号。

2.8.2 新建一个元组

tup1 = (1,2,3)
tup2 = ("a","b","c")
print(tup1,tup2)
  • 输出结果
(1, 2, 3) ('a', 'b', 'c')

2.8.3 获取元组的长度

  • 获取元组长度的方法与获取列表长度的方法是一样的,都使用函数len()
print(len(tup1))
print(len(tup2))
  • 输出结果
3
3

2.8.4 获取元组内的元素

  • 元组内元素的获取方法主要分为普通索引和切片索引两种。
#普通索引
tup = (1,2,3,4,5)
print("第一个元素为:",tup[0])
print("第三个元素为:",tup[2])

#切片索引
print(tup[:3])
print(tup[2:])
  • 输出结果
第一个元素为: 1
第三个元素为: 3
(1, 2, 3)
(3, 4, 5)

2.8.5 元组与列表相互转换

  • 使用函数list()将元组转化为列表
tup = (1,2,3)
list(tup)
  • 输出结果
[1, 2, 3]
  • 使用函数tuple()将列表转化为元组
str_list = (1,2,3)
tuple(str_list)
  • 输出结果
(1, 2, 3)

2.8.6 zip()函数

  • zip()函数用于将可迭代的对象(列表、元组)作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。zip()函数常与 for 循环一起搭配使用
#当可迭代对象是列表时
list_a = [1,2,3,4]
list_b = ["a","b","c","d"]

for i in zip(list_a,list_b):
    print(i)
  • 输出结果
(1, 'a')
(2, 'b')
(3, 'c')
(4, 'd')
#当可迭代对象是元组时
tup_a = (1,2,3,4)
tup_b = ("a","b","c","d")

for i in zip(tup_a,tup_b):
    print(i)
  • 输出结果
(1, 'a')
(2, 'b')
(3, 'c')
(4, 'd')

2.9 运算符

2.9.1 算术运算符

  • 算术运算就是常规的加、减、乘、除类运算。下表为基本的算术运算符及其示例。
    在这里插入图片描述

2.9.2 比较运算符

  • 比较运算符就是大于、等于、小于之类的,主要是用来做比较的,返回 True 或False的结果,常用的比较运算符如下表所示。
    在这里插入图片描述
    在这里插入图片描述

2.9.3 逻辑运算符

  • 逻辑运算符就是与、或、非,下表为逻辑运算符及其示例
    在这里插入图片描述

2.10 循环语句

2.10.1 for循环

subject = ["excel","SQL","python","统计学"]

for i in subject:
    print("我正在学习{}".format(i))
  • 输出结果
我正在学习excel
我正在学习SQL
我正在学习python
我正在学习统计学

2.10.2 while循环

week = 0
while week <= 7:
    print("我已经学习数据分析第{}周啦".format(week))
    week+=1
print("我已经学习数据分析第{}周啦,我要去找工作啦".format(week-1))
  • 输出结果
我已经学习数据分析第0周啦
我已经学习数据分析第1周啦
我已经学习数据分析第2周啦
我已经学习数据分析第3周啦
我已经学习数据分析第4周啦
我已经学习数据分析第5周啦
我已经学习数据分析第6周啦
我已经学习数据分析第7周啦
我已经学习数据分析第7周啦,我要去找工作啦

2.11 条件语句

2.11.1 if语句

  • if条件语句是程序先去判断某个条件是否满足,如果该条件满足,则执行判断语句后的程序。if条件后面的程序需要首行缩进。

2.11.2 else语句

  • else语句是if语句的补充,if条件只说明了当条件满足时程序做什么,没有说明当条件不满足时程序做什么。而else语句正好是用来说明当条件不满足时,程序做什么。

2.11.3 elif语句

  • elif语句可以近似理解成else_if,前面提到的if语句、else语句都只能对一条语句进行判断,但是当你需要对多条语句进行判断时,就可以用elif语句。
score = int(input("请输入成绩"))

if score < 0 or score > 100:
    print("输入成绩不正确")
elif score < 60:
    print("成绩不及格")
elif score < 80:
    print("成绩及格") 
else:
    print("成绩优秀")

2.12 函数

  • 函数是在一个程序中可以被重复使用的一段程序。这段程序是由一块语句和一个名称组成的,只要函数定义好以后,你就可以在程序中通过该名字调用执行这段程序。

2.12.1 普通函数

  • 普通函数一般由函数名(必需)、参数、语句块(必需)、return、变量这几部分组成。
def learn_python(location):
    print("我正在{}上学习python".format(location))
    
learn_python("地铁")
  • 输出结果
我正在地铁上学习python

2.12.2 匿名函数

  • 匿名函数,顾名思义就是没有名字的函数,也就是省略了def定义函数的过程。lambda只是一个表达式,没有函数体
#普通函数如下
def two_sum(x,y):
    result = x+y
    return result
two_sum(1,2)
  • 输出结果
3
#匿名函数如下
f = lambda x,y:x+y
f(1,2)
  • 输出结果
3

2.13 高级特性

2.13.1 列表生成式

#普通方法实现如下
num = [1,2,3,4,5]
new = []
for i in num:
    new.append(i**2)
print(new)
  • 输出结果
[1, 4, 9, 16, 25]
#列表生成式实现如下
num = [1,2,3,4,5]
[i**2 for i in num]
  • 输出结果
[1, 4, 9, 16, 25]
list1 = ["m","n"]
list2 = ["a","b"]
new = []
for m in list1:
    for n in list2:
        new.append(n+m)
print(new)
  • 输出结果
['am', 'bm', 'an', 'bn']
list1 = ["m","n"]
list2 = ["a","b"]
[m+n for n in list1 for m in list2]
  • 输出结果
['am', 'bm', 'an', 'bn']

2.13.2 map函数

  • map 函数的表现形式是 map(function,agrs),表示对序列 args 中的每个值进行function操作,最终得到一个结果序列。
a = map(lambda x,y:x+y,[1,3,2],[4,5,6])

for i in a :
    print(i)
  • 输出结果
5
8
8
b = list(map(lambda x,y:x+y,[1,3,2],[4,5,6]))
b
  • 输出结果
[5, 8, 8]

2.14 模块

  • 模块之所以是升级版的函数,是因为在任意程序中都可以通过模块名去调用该模块对应的程序。
  • 你要调用函数首先需要定义一个函数,同理,你要调用模块,首先需要导入模块,导入模块的方法主要有两种
import 模块名
from 模块名1 import 模块名2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值