三分钟搞定python基础


在机器学习和人工智能为主导的工业4.0时代,Python犹如一股龙卷风袭卷着一切。Python作为一门解释性的面向对象的语言虽然在运算速度上有不足,但是相比于程序运算速度,程序项目开发速度更为重要,而且在在这个装备氪金时代,运算速度的缺憾完全可以拿硬件来补,何况Python还支持并行多线程开发。Python之所以在项目开发速度方面独树一帜,在于它的开源思想和活跃的社区,在网络爬虫、科学计算、机器学习和生物信息等诸多领域都有大量成熟、稳健的模块,这些造好的‘轮子’省去了大量的开发时间,让我们在接到项目时可以在极短的时间内完成架构,快速解决问题。

Python2或Python3?

其实,这不是问题,无论Python2还是Python3对于初学者来说差别不大,但是须知Python3在性能上做了优化,更加规范化了某些用法,支持Python3的模块日益增多,Python3可谓势在必行,所以这里还是强烈推荐大家按照Python3的语法来学习。

运行方式

不仅是Python,大多数语言的执行方式一般包括两种,交互式执行和接受脚本执行。
所谓交互式,即进入Python终端,所键即所得,这种好处对于初学者来说甚好,便于直观理解各个函数的语法、功能。尤其推荐大家使用iPython,可以带来更好的交互式体验。另外一种是通过执行写好的脚本,这种是真正的生产环境下的执行方式,但是在执行之前需要大量测试,避免各种报错和隐藏的bug,这里推荐大家使用Python专门的开发编辑器Pycharm。

基础语法

print('Hello Word!')
a = 1 + 1       #这是单行注释,=是赋值操作,表示将右边的运算式结果赋值给变量a;符号两边加上空格以增加可阅读性
'''
多行注释
3个单/双引号开头和结尾
'''
a = 2
a * 2
a ** 2

#       多重赋值
a, b, c = 1, 2, 'a'
'''
上述命令相当于:
a = 1
b = 2
c = 'a'

'''
#       字符串操作
s = 'I like python'
s + 'very much!' #将s与字符串拼接,中间以单个空格连接
$ I like python very much
s.split(' ') #将s以单个空格符切割,得到列表
$ ['I', 'like', 'python']
# 判断语句
if 条件1:
        执行体1
elif 条件2:
        执行体2
else:
        最后的执行体
'''
Python一般不用花括号{},也没有end语句,他是用缩进对齐作为语句的层次标记。同一层次的缩进量要严格的一一对应,否则报错。如下语句是错误的。
'''
if a == 1:
        print(a)        #缩进2个空格
else:
   print('不等于1')     #缩进3个空格

'''
个人理解,这种语法规范简洁而典雅,非常符合Python的思想。其他的语言往往通过关键字来标注语法结构,但是随着嵌套的层次增加,关键字也难以直观的显示语法结构,这个时候也须借助于缩进,所以Python干脆去掉这些语句内部的标志性词,用更为严格的缩进来表示,实在是简洁而又典
'''

# 循环语句
s, k = 0
while k < 101:  #判断k是否满足小于101,不满足则跳出循环
        k = k + 1   #从k=0开始每循环1次加1
        s = s + k   #s累加k的和即1+2+3...
print(s)
$ 5050
s = 0
for k in range(101): #in判断某个元素是否在一个集合内;range生成一个序列,一般为range(a,b,c),表示生成一个首相为a,公差为c且不超过b-1的等差数列。
        s = s + k
print(s)
$ 5050

# 函数
# Python用def来自定义函数
def add2num(x, y):  #定义函数,同时定义2个参数
        return(x + y)   #return返回函数值
print(add2num(1, 2))  #调用函数
$ 3
# 与一般函数不同的是Python函数返回值可以是各种形式,例如列表(list)甚至返回多个值。
def add2num(x=0, y=0):
        return([x+1, y+1])      #返回值是一个列表
def add3(x, y):
        return(x+3, y+3)        #双重返回
a, b = add3(1, 2)

# lambda:匿名函数
# 对于定义add2num这样简单的函数,通过def需要正式命名、计算和返值显得过于麻烦,此时lambda函数横空而出
f = lambda x, y : x + y #定义函数f(x,y)=x+y
f(1,1)  #调用函数
$ 2

数据结构

Python有4个内建的数据结构(即存储数据的容器),容器里不要求元素类型一致:
列表(lsit):如l = [1, 2, 3],可索引可变
元组(tuple):如t = (1, 2, 3),可索引不可变
字典(dictionary):如d[‘sex’] = ‘male’,以有意义的键名(key)为索引,无序
集合:如s = {1, 2},唯一、无序,不可索引

list/tuple

列表可以修改,元组相对固定,不能修改。例如上述列表l[0] = ‘a’,即将列表l第一个元素1修改为’a’,这里注意两点:
(1)Python索引是从0开始,即第一个元素索引(index)是0
(2)列表是原地修改
如想复制列表需要通过copy = l[:],而通过copy = l只是重新贴了一个标签,修改copy仍然会让原始l改变,即所谓的假拷贝。
list/tuple函数可将对象变成列表/元素类型,例如tuple([1, 2])是(1,2)
列表/元组相关函数

函数 功能
len(a) 列表/元组元素个数
max(a) 返回列表/元组最大值
min(a) 返回最小值
sum(a) 求和
sorted(a) 升序排序
cmp(a,b) 比较2个列表/元组的元素

此外,作为对象,列表本身有很多方法,元组不允许修改因此方法很少

函数 功能
a.append(1) 将1添加到列表a末尾
a.count(1) 列表a中元素1出现的次数
a.extend([1,2]) 将列表[1,2]内容追加到列表a末尾
a.index(1) 从列表a中找出第一个1的索引位置
a.insert(2,1) 将1插入列表a索引为2的位置
a.pop(1) 移除列表a索引为1的元素

列表解析:
对于列表a = [1, 2, 3]
每个元素加1可这样写:
[i +1 for i in a ]
返回[2, 3, 4]

dictionary

像list/tuple都是以元素位置为索引的,如果存贮的数据过大,通过这种方式迭代查询的效率势必十分低下,因此有了字典。字典的好处在于通过Dic[key] = value的形式将键值对联系起来,通过相应的key就能找到对应的值,类似于查字典一样,将十分高效。
创建字典的方法:
(1)dic[‘key’]=‘v’ #需先声明dic是字典:dic=dict()
(2)d={‘key’:‘v’, ‘age’:1} #冒号联系键值对,逗号隔开每个元素
(3)dict.fromkeys([‘key’,‘age’],20) #相当于{‘key’:20, ‘age’:20}
取值方法:
dic[‘key’]
$ ‘v’

set

Python中的集合与数学上的集合概念基本一致,元素唯一、无序,不支持索引。
set([1, 2, 3]) #将列表转化成集合
集合可以进行一些运算:
t | s #集合t和s的并集
t & s #t和s的交集
t - s #求差集,项在t中不在s中
t ^ s #对称差集(项在t或s中,但不会同时出现在二者中)

库的导入和添加

Python之所以强大就是因为有很多库,例如数学相关库math库,通过import关键字导入

import math
math.pi #内置圆周率常数
math.exp(1) #计算指数
math.sin(1) #计算正弦

#   导入时给库起一个别名
import math as m
m.pi

#   指定库中函数导入(节省内存资源,也避免命名冲突)
from math import exp as e   #只导入math库中的exp函数,取名e
e(1)
#   通过help('modules')查看库的帮助
发布了23 篇原创文章 · 获赞 18 · 访问量 6560

猜你喜欢

转载自blog.csdn.net/qq_42491125/article/details/100087089