赞
踩
Python是一种跨平台的计算机程序设计语言。是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的、大型项目的开发。
在此之前,我已经写了以下几篇AI基础的快速入门,本篇文章讲解python语言的基础部分,也是后续内容的基础。
本文代码可以在文末下载
在Python中用引号引起来的字符集称之为字符串,比如:'hello'、"my Python"、"2+3"等都是字符串 Python中字符串中使用的引号可以是单引号、双引号跟三引号
print ('hello world!')
hello world!
- c = 'It is a "dog"!'
- print (c)
It is a "dog"!
- c1= "It's a dog!"
- print (c1)
It's a dog!
- c2 = """hello
- world
- !"""
- print (c2)
- hello
- world
- !
转义字符''
转义字符\可以转义很多字符,比如\n表示换行,\t表示制表符,字符\本身也要转义,所以\ \表示的字符就是\
- print ('It\'s a dog!')
- print ("hello world!\nhello Python!")
- print ('\\\t\\')
- It's a dog!
- hello world!
- hello Python!
- \ \
原样输出引号内字符串可以使用在引号前加r
print (r'\\\t\\')
\\\t\\
子字符串及运算
- s = 'Python'
- print( 'Py'in s)
- print( 'py'in s)
- True
- False
取子字符串有两种方法,使用[]索引或者切片运算法[:],这两个方法使用面非常广
print (s[2])
t
print (s[1:4])
yth
字符串连接与格式化输出
- word1 = '"hello"'
- word2 = '"world"'
- sentence = word1.strip('"') + ' ' + word2.strip('"') + '!'
-
- print( 'The first word is %s, and the second word is %s' %(word1, word2))
- print (sentence)
- The first word is "hello", and the second word is "world"
- hello world!
整数
Python可以处理任意大小的整数,当然包括负整数,在程序中的表示方法和数学上的写法一模一样
- i = 7
- print (i)
7
7 + 3
10
7 - 3
4
- 7 * 3
21
- 7 ** 3
343
7 / 3#Python3之后,整数除法和浮点数除法已经没有差异
2.3333333333333335
7 % 3
1
7//3
2
浮点数
7.0 / 3
2.3333333333333335
3.14 * 10 ** 2
314.0
其它表示方法
0b1111
15
0xff
255
1.2e-5
1.2e-05
更多运算
- import math
-
- print (math.log(math.e)) # 更多运算可查阅文档
1.0
True
True
False
False
TrueandFalse
False
TrueorFalse
True
notTrue
False
True + False
1
18 >= 6 * 3or'py'in'Python'
True
18 >= 6 * 3and'py'in'Python'
False
18 >= 6 * 3and'Py'in'Python'
True
- import time
-
- now = time.strptime('2016-07-20', '%Y-%m-%d')
- print (now)
time.struct_time(tm_year=2016, tm_mon=7, tm_mday=20, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=2, tm_yday=202, tm_isdst=-1)
time.strftime('%Y-%m-%d', now)
'2016-07-20'
- import datetime
-
- someDay = datetime.date(1999,2,10)
- anotherDay = datetime.date(1999,2,15)
- deltaDay = anotherDay - someDay
- deltaDay.days
5
还有其他一些datetime格式
查看变量类型
type(None)
NoneType
type(1.0)
float
type(True)
bool
- s="NoneType"
- type(s)
str
类型转换
str(10086)
'10086'
?float()
float(10086)
10086.0
int('10086')
10086
complex(10086)
(10086+0j)
列表(list)、元组(tuple)、集合(set)、字典(dict)
用来存储一连串元素的容器,列表用[]来表示,其中元素的类型可不相同。
- mylist= [0, 1, 2, 3, 4, 5]
- print (mylist)
[0, 1, 2, 3, 4, 5]
列表索引和切片
- # 索引从0开始,含左不含右
- print ('[4]=', mylist[4])
- print ('[-4]=', mylist[-4])
- print ('[0:4]=', mylist[0:4])
- print ('[:4]=', mylist[:4])#dddd
- print( '[4:]=', mylist[4:])
- print ('[0:4:2]=', mylist[0:4:2])
- print ('[-5:-1:]=', mylist[-5:-1:])
- print ('[-2::-1]=', mylist[-2::-1])
- [4]= 4
- [-4]= 2
- [0:4]= [0, 1, 2, 3]
- [:4]= [0, 1, 2, 3]
- [4:]= [4, 5]
- [0:4:2]= [0, 2]
- [-5:-1:]= [1, 2, 3, 4]
- [-2::-1]= [4, 3, 2, 1, 0]
修改列表
- mylist[3] = "小月"
- print (mylist[3])
-
- mylist[5]="小楠"
- print (mylist[5])
-
- mylist[5]=19978
- print (mylist[5])
-
- 小月
- 小楠
- 19978
print (mylist)
[0, 1, 2, '小月', 4, 19978]
插入元素
- mylist.append('han') # 添加到尾部
- mylist.extend(['long', 'wan'])
- print (mylist)
[0, 1, 2, '小月', 4, 19978, 'han', 'long', 'wan']
- scores = [90, 80, 75, 66]
- mylist.insert(1, scores) # 添加到指定位置
- mylist
[0, [90, 80, 75, 66], 1, 2, '小月', 4, 19978, 'han', 'long', 'wan']
a=[]
删除元素
- print (mylist.pop(1)) # 该函数返回被弹出的元素,不传入参数则删除最后一个元素
- print (mylist)
- [90, 80, 75, 66]
- [0, 1, 2, '小月', 4, 19978, 'han', 'long', 'wan']
判断元素是否在列表中等
- print( 'wan'in mylist)
- print ('han'notin mylist)
- True
- False
mylist.count('wan')
1
mylist.index('wan')
8
range函数生成整数列表
- print (range(10))
- print (range(-5, 5))
- print (range(-10, 10, 2))
- print (range(16, 10, -1))
- range(0, 10)
- range(-5, 5)
- range(-10, 10, 2)
- range(16, 10, -1)
元组类似列表,元组里面的元素也是进行索引计算。列表里面的元素的值可以修改,而元组里面的元素的值不能修改,只能读取。元组的符号是()。
- studentsTuple = ("ming", "jun", "qiang", "wu", scores)
- studentsTuple
('ming', 'jun', 'qiang', 'wu', [90, 80, 75, 66])
- try:
- studentsTuple[1] = 'fu'
- except TypeError:
- print ('TypeError')
TypeError
- scores[1]= 100
- studentsTuple
('ming', 'jun', 'qiang', 'wu', [90, 100, 75, 66])
'ming'in studentsTuple
True
studentsTuple[0:4]
('ming', 'jun', 'qiang', 'wu')
studentsTuple.count('ming')
1
studentsTuple.index('jun')
1
len(studentsTuple)
5
Python中集合主要有两个功能,一个功能是进行集合操作,另一个功能是消除重复元素。集合的格式是:set(),其中()内可以是列表、字典或字符串,因为字符串是以列表的形式存储的
- studentsSet = set(mylist)
- print (studentsSet)
{0, 1, 2, 'han', 4, '小月', 19978, 'wan', 'long'}
- studentsSet.add('xu')
- print (studentsSet)
{0, 1, 2, 'han', 4, '小月', 19978, 'wan', 'long', 'xu'}
- studentsSet.remove('xu')
- print (studentsSet)
{0, 1, 2, 'han', 4, '小月', 19978, 'wan', 'long'}
mylist.sort()#会出错
- ---------------------------------------------------------------------------
-
- TypeError Traceback (most recent call last)
-
- <ipython-input-69-7309caa8a1d6> in <module>()
- ----> 1 mylist.sort()
-
-
- TypeError: '<' not supported between instances of 'str' and 'int'
- a = set("abcnmaaaaggsng")
- print ('a=', a)
a= {'b', 'a', 'm', 'c', 'g', 's', 'n'}
- b = set("cdfm")
- print ('b=', b)
b= {'m', 'd', 'c', 'f'}
- #交集
- x = a & b
- print( 'x=', x)
x= {'m', 'c'}
- #并集
- y = a | b
- print ('y=', y)
- #差集
- z = a - b
- print( 'z=', z)
- #去除重复元素
- new = set(a)
- print( z)
- y= {'b', 'a', 'f', 'd', 'm', 'c', 'g', 's', 'n'}
- z= {'b', 'a', 'g', 's', 'n'}
- {'b', 'a', 'g', 's', 'n'}
Python中的字典dict也叫做关联数组,用大括号{}括起来,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度,其中key不能重复。
- k = {"name":"weiwei", "home":"guilin"}
- print (k["home"])
guilin
- print( k.keys())
- print( k.values())
- dict_keys(['name', 'home'])
- dict_values(['weiwei', 'guilin'])
添加、修改字典里面的项目
- k["like"] = "music"
- k['name'] = 'guangzhou'
- print (k)
{'name': 'guangzhou', 'home': 'guilin', 'like': 'music'}
k.get('edu', -1) # 通过dict提供的get方法,如果key不存在,可以返回None,或者自己指定的value
-1
删除key-value元素
- k.pop('like')
- print (k)
{'name': 'guangzhou', 'home': 'guilin'}
type(mylist)
list
tuple(mylist)
(0, 1, 2, '小月', 4, 19978, 'han', 'long', 'wan')
list(k)
['name', 'home']
- zl = zip(('A', 'B', 'C'), [1, 2, 3, 4]) # zip可以将列表、元组、集合、字典‘缝合’起来
- print (zl)
- print (dict(zl))
- <zip object at 0x0000015AFAA612C8>
- {'A': 1, 'B': 2, 'C': 3}
在Python中通常的情况下程序的执行是从上往下执行的,而某些时候我们为了改变程序的执行顺序,使用控制流语句控制程序执行方式。Python中有三种控制流类型:顺序结构、分支结构、循环结构。
另外,Python可以使用分号";"分隔语句,但一般是使用换行来分隔;语句块不用大括号"{}",而使用缩进(可以使用四个空格)来表示
- s = '7'
- num = int(s) # 一般不使用这种分隔方式
- num -= 1# num = num - 1
- num *= 6# num = num * 6
- print (num)
36
if <True or Flase表达式>:
执行语句块
elif <True or Flase表达式>:
执行语句块
else: # 都不满足
执行语句块
#elif子句可以有多条,elif和else部分可省略
- salary = 1000
- if salary > 10000:
- print ("Wow!!!!!!!")
- elif salary > 5000:
- print ("That's OK.")
- elif salary > 3000:
- print ("5555555555")
- else:
- print ("..........")
..........
while 循环
while <True or Flase表达式>:
循环执行语句块
else: # 不满足条件
执行语句块
#else部分可以省略
- a = 1
- while a < 10:
- if a <= 5:
- print (a)
- else:
- print ("Hello")
- a = a + 1
- else:
- print ("Done")
- 1
- 2
- 3
- 4
- 5
- Hello
- Hello
- Hello
- Hello
- Done
for 循环 for (条件变量) in (集合):
执行语句块
“集合”并不单指set,而是“形似”集合的列表、元组、字典、数组都可以进行循环
条件变量可以有多个
- heights = {'Yao':226, 'Sharq':216, 'AI':183}
- for i in heights:
- print (i, heights[i])
- Yao 226
- Sharq 216
- AI 183
- for key, value in heights.items():
- print(key, value)
- Yao 226
- Sharq 216
- AI 183
- total = 0
- for i in range(1, 101):
- total += i#total=total+i
- print (total)
5050
break:跳出循环
continue:跳出当前循环,继续下一次循环
pass:占位符,什么也不做
- for i in range(1, 5):
- if i == 3:
- break
- print (i)
- 1
- 2
- for i in range(1, 5):
- if i == 3:
- continue
- print (i)
- 1
- 2
- 4
- for i in range(1, 5):
- if i == 3:
- pass
- print (i)
- 1
- 2
- 3
- 4
三种形式
[<表达式> for (条件变量) in (集合)]
[<表达式> for (条件变量) in (集合) if <'True or False'表达式>]
[<表达式> if <'True or False'表达式> else <表达式> for (条件变量) in (集合) ]
- fruits = ['"Apple', 'Watermelon', '"Banana"']
- [x.strip('"') for x in fruits]
['Apple', 'Watermelon', 'Banana']
- # 另一种写法
- test_list=[]
- for x in fruits:
- x=x.strip('"')
- test_list.append(x)
- test_list
['Apple', 'Watermelon', 'Banana']
[x ** 2for x in range(21) if x%2]
[1, 9, 25, 49, 81, 121, 169, 225, 289, 361]
- # 另一种写法
- test_list=[]
- for x in range(21):
- if x%2:
- x=x**2
- test_list.append(x)
- test_list
[1, 9, 25, 49, 81, 121, 169, 225, 289, 361]
[m + n for m in'ABC'for n in'XYZ']
['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']
- # 另一种写法
- test_list=[]
- for m in'ABC':
- for n in'XYZ':
- x=m+n
- test_list.append(x)
- test_list
['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']
- d = {'x': 'A', 'y': 'B', 'z': 'C' }
- [k + '=' + v for k, v in d.items()]
['x=A', 'y=B', 'z=C']
- # 另一种写法
- test_list=[]
- for k, v in d.items():
- x=k + '=' + v
- test_list.append(x)
- test_list
['x=A', 'y=B', 'z=C']
函数是用来封装特定功能的实体,可对不同类型和结构的数据进行操作,达到预定目标。
Python内置了很多有用的函数,我们可以直接调用,进行数据分析时多数情况下是通过调用定义好的函数来操作数据的
- str1 = "as"
- int1 = -9
- print (len(str1))
- print (abs(int1))
- 2
- 9
- fruits = ['Apple', 'Banana', 'Melon']
- fruits.append('Grape')
- print (fruits)
['Apple', 'Banana', 'Melon', 'Grape']
当系统自带函数不足以完成指定的功能时,需要用户自定义函数来完成。def 函数名():函数内容 函数内容 <return 返回值>
- def my_abs(x):
- if x >= 0:
- return x
- else:
- return -x
-
- my_abs(-9)
9
可以没有return
- def filter_fruit(someList, d):
- for i in someList:
- if i == d:
- someList.remove(i)
- else:
- pass
-
- print (filter_fruit(fruits, 'Melon'))
- print (fruits)
- None
- ['Apple', 'Banana', 'Grape']
多个返回值的情况
- def test(i, j):
- k = i * j
- return i, j, k
-
- a , b , c = test(4, 5)
- print (a, b , c)
- type(test(4, 5))
- 4 5 20
- tuple
把另一个函数作为参数传入一个函数,这样的函数称为高阶函数
函数本身也可以赋值给变量,函数与其它对象具有同等地位
- myFunction = abs
- myFunction(-9)
9
参数传入函数
- def add(x, y, f):
- return f(x) + f(y)
-
- add(7, -5, myFunction)
12
常用高阶函数
map/reduce: map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回;reduce把一个函数作用在一个序列[x1, x2, x3...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算
- myList = [-1, 2, -3, 4, -5, 6, 7]
- map(abs, myList)
<map at 0x15afaa00630>
- from functools import reduce
- def powerAdd(a, b):
- return pow(a, 2) + pow(b, 2)
-
- reduce(powerAdd, myList) # 是否是计算平方和?
3560020598205630145296938
filter:filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素
- def is_odd(x):
- return x % 3# 0被判断为False,其它被判断为True
-
- filter(is_odd, myList)
<filter at 0x15afa9f0588>
sorted: 实现对序列排序,默认情况下对于两个元素x和y,如果认为x < y,则返回-1,如果认为x == y,则返回0,如果认为x > y,则返回1
默认排序:数字大小或字母序(针对字符串)
sorted(myList)
[-5, -3, -1, 2, 4, 6, 7]
*练习:自定义一个排序规则函数,可将列表中字符串忽略大小写地,按字母序排列,列表为['Apple', 'orange', 'Peach', 'banana']。提示:字母转换为大写的方法为some_str.upper(),转换为小写使用some_str.lower()
返回函数: 高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回
- def powAdd(x, y):
- def power(n):
- return pow(x, n) + pow(y, n)
- return power
-
- myF = powAdd(3, 4)
- myF
<function __main__.powAdd.<locals>.power>
myF(2)
25
匿名函数:高阶函数传入函数时,不需要显式地定义函数,直接传入匿名函数更方便
- f = lambda x: x * x
- f(4)
16
等同于:
- def f(x):
- return x * x
map(lambda x: x * x, myList)
<map at 0x15afaa1d0f0>
匿名函数可以传入多个参数
reduce(lambda x, y: x + y, map(lambda x: x * x, myList))
140
返回函数可以是匿名函数
- def powAdd1(x, y):
- returnlambda n: pow(x, n) + pow(y, n)
-
- lamb = powAdd1(3, 4)
- lamb(2)
25
标识符第一个字符只能是字母或下划线,第一个字符不能出现数字或其他字符;标识符除第一个字符外,其他部分可以是字母或者下划线或者数字,标识符大小写敏感,比如name跟Name是不同的标识符。
Python规范:
类标识符每个字符第一个字母大写;
对象\变量标识符的第一个字母小写,其余首字母大写,或使用下划线'_' 连接;
函数命名同普通对象。
关键字
关键字是指系统中自带的具备特定含义的标识符
- # 查看一下关键字有哪些,避免关键字做自定义标识符
- import keyword
- print (keyword.kwlist)
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
注释
Python中的注释一般用#进行注释
帮助
Python中的注释一般用?查看帮助
关于Python技术储备
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
一、Python所有方向的学习路线
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
二、Python必备开发工具
三、精品Python学习书籍
当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
四、Python视频合集
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
五、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
六、Python练习题
检查学习结果。
七、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
最后祝大家天天进步!!
上面这份完整版的Python全套学习资料已经上传至CSDN官方,朋友如果需要可以直接微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。