本篇内容为个人之前所有学的python常用命令和函数的整理,后期会不断更新。由于本人平时双开,会同时包含python2和python3的命令,同时会以 #py2 #py3的注释注明, 没有注明的就代表通用。
如果想py2 py3双开的同学可以参考
刀客特鹿:Windows下Python 2.7和3.X 在同一台电脑上共存(双开)方法zhuanlan.zhihu.com
本位作为笔记整理,可能不像教材那样逻辑清晰,建议搜索使用,如果要系统性的学习,还是建议找专业的材料。
本文内容全为自己手动整理,当然参考多方资料,如有侵权,或者需要添加相关参考链接,请联系本人,本人一定会尽自己所能遵守每一位互联网原创者的知识版权。
本文参考网站 和学习资源推荐:
廖雪峰的官方网站
简明Python教程
操作系统 windows
IDE:pycharm
Python软件安装包:Anaconda
如果Python和pycharm都不会安装的同学,请参考:
刀客特鹿:打开Python的优雅姿势——手把手教零基础的你安装python(Anaconda)zhuanlan.zhihu.com刀客特鹿:打开Python的优雅姿势——手把手教零基础的你安装python开发环IDE(Pycharm)zhuanlan.zhihu.com
统一程序的编码:
# 因为python对中文字符串不是太友好,一般都会在文件的首行定义编码。至于其中的原因,还希望大家自己去网上搜索答案。初学者不理解也没有关系,强行养成每次开篇打码就把以下内容复制在首行就可以。
# encoding: utf-8# -*- coding: utf-8 -*-
# 以上两种写法的意思是一样的,随便哪种都可以,意思都是指定本程序指定默认编码 utf-8
当然,后续初学者还是会遇到很多编码问题。这是一种挑战,也是一道门槛,鼓励跨越。
有兴趣的同学可以看廖老师的讲解:
导入库
import pandas import pandas as pdfrom Collecting_data import Collect_stock_data
# 从我自己写的文件 Collecting_data作为函数导入
有些模块内容比较丰富也会用到类似方法导入,如
from matplotlib.pyplot import plot
输出打印:
## hellow world
# py2
print 'hellow world'
# py3
print('hellow word')
# 其实python2.7版本也支持print()的方式, 如果是初学者可以统一使用print()方式
# 输出格式打印
a = 'Peter'
# py2
print "My name is:" + a
# py3
print("My name is:" + a)
# 多变量的输出打印
a = 'Peter'b = 1c = 17.4576
# py2
print a + 'has' + str(b) + 'book which is cost ' + str(c) + ' yuan.'print"%s has %d book which is cost %.2f yuan." % (a, b, c)print "{} has {} book which is cost {} yuan.".format(a, str(b), float(c))
# py3
print(a + ' has ' + str(b) + ' book which is cost ' + str(c) + ' yuan.')print("%s has %d book which is cost %.2f yuan." % (a, b, c))print("{} has {} book which is cost {} yuan.".format(a, str(b), float(c)))
输出
# 从上面的代码可以看出,py2 和 py3 对于print这个命令,多数情况下,区别就是加不加()。
占位符
%d int
%s str
%f float
%x 十六进制整数
输入变量
name = input()print(name)
还是用上面的案例
a = input()b = 1c = 17.4576print(a + ' has ' + str(b) + ' book which is cost ' + str(c) + ' yuan.')print("%s has %d book which is cost %.2f yuan." % (a, b, c))print("{} has {} book which is cost {} yuan.".format(a, str(b), float(c)))
在pycharm的终端输入 你想设置的名字
# input()在py2和py3里的差异是,py2里要输入'Lilith', py3里只要输入Lilith,也就是说py2里input()输入的变量类型要自己定义,而py3里则默认为str格式
终止运行程序
exit()
注释
# 以 # 开头的本行内容都为注释
""" ... """ 以""" 开头到 以"""结尾的多行内容都可以是注释。
数据类型和变量
数字变量
a = 100 # int 整型b = 18.88 # float 浮点数c = 3.14E10 # 科学计数法,代表3.14*10~10次方
字符串 string
d = 'hellow world' # 单引号,双引号,三引号都可以,引号内的可以是字母, 单词,语句。d = ”hellow world“d = '''hellow world'''
以上三种写法效果一样
转义字符 \ %
e = 'I\'m \"OK\"!' # 通常用来输出 引号 这类有特殊意义的符号f = 100.00print('Percentage is %f%%' % (float(f))) # 第二个%是转义字符,第三个%是要输出的内容
布尔值, bool:
True
False
空值
None
查看变量类型 type()
a = 'Peter'
b = 1
c = 17.4576
d = True
e = None
print(type(a), type(b), type(c), type(d), type(e))
基本运算:
计算符号
算符是连接一个或多个元素的符号,用来表达计算
常见的算术符号:+ - * / %
% 是取余数的操作,不是除法
9 % 3 == 0,9%2==1
注意:除法运算时 /
整除还是整,要得到小数,需要用浮点数除整或者浮点数除浮点数
print(10 / 3) # 整数除以整数,结果是整数3,而不是3.33333...print(10.0 / 3) # 小数除以整数,结果是浮点数,结果是3.33333...
自运算的快速写法
num = 1num += 1 # 等价于 num = num + 1
# 在写一个计数器的时候经常使用上面的操作
类似的还有
num -= 1num *= 2num /= 3
比较运算符:
>, <, >=, <=, ==, !=(不等于)
返回的是布尔值
布尔运算符:
and, or, &, |
and 等价于 &
or 等价于 |
作用是 布尔值比较
# 建议尽量使用 & | 表达逻辑关系,因为在很多情况下,如pandas的dataframe中用and和or是无法识别逻辑关系的。
列表 list[] 操作
list是一种有序的集合,可以随时添加和删除其中的元素。
定义一个列表
a = [1, 2 ,3 , 4, 5]
有序的概念
b = [5, 4, 3, 2, 1]a ! = b # 输出 True
列表长度 len()
len(a) == 5
切片操作
列表内的元素从0开始顺序计数
a[0] == 1, a[2] == 3
切片赋值,元素赋值
a[0] = 5, a == [5, 2, 3, 4, 5]
反向切片
a[-1] == 5
多个元素切片
a[1:3] == [2, 3] # 注意list的切片区间是开闭的,取前不取尾巴a[1:] == [2, 3, 4, 5] #取出序号1以后所有的元素a[-1:] == 5 a[-2:] == [4, 5]a[ : 3] == [1, 2, 3]
# 从这个结果可以看出 : 前面默认hi0, 后面默认的是len(list), 而且只能从坐向右取数
a[1:4:2] == [2, 4] # 按范围[1:4] 按步长2 取数
列表中可以同时放入多种变量类型
b = [1, 'a', 2.44, 5E10, 'name' ]
列表的相加(合并)
c = a + bc = a.extend(b)
输出:[1, 2, 3, 4, 5, 1, 'a', 2.44, 50000000000.0, 'name']
这种操作类似 a.extend(b) print(a) 注意:c = a.extend(b) 结果是None
另外对列表中的元素对应求和操作需要for 或者itertools
列表乘以数字 *
print(a*3)
输出:[1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
列表添加列表 extend()
a.extend(b)
输出:[1, 2, 3, 4, 5, 1, 'a', 2.44, 50000000000.0, 'name']
列表添加元素 append()
a.append(b)
输出:[1, 2, 3, 4, 5, [1, 'a', 2.44, 50000000000.0, 'name']]
append是将一个列表作为一个元素塞入原始列表中
列表删除元素 remove()
a.remove(3)a.remove(a[2])
只能删除单个元素
列表的插入 insert(index, value)
a.insert(1,'Second')print(a)
输出 [1, 'Second', 2, 3, 4, 5]
列表的反转,倒叙,排序操作
反转,倒叙 reverse()
a.reverse()
排序 sort()
a.sort() # 默认从小到大排序,可以设置参数reverse=True, 效果就和reverse()一样了b.sort() # 如果有字符串也能排序print(b)
输出:[1, 2.44, 50000000000.0, 'a', 'name']
列表查询,元素定位 list.index()
print(a.index(4))
输出:3
如果一个列表里有两个相同的元素,只会输出第一个元素在列表里的位置(序号)
a = [5, 2, 3, 4, 5]print(a.index(5))
输出:0
快速创建一个列表 range()
print(range(5)) # 输出 [0, 1, 2, 3, 4] # 从0开始计数, 输出5个数字print(range(1:10)) # 输出 [1, 2, 3, 4, 5, 6, 7, 8, 9]print(range(1: 10: 2)) # 输出[1, 3, 5, 7, 9] # 从1到10,步长为2
列表的最大值 max(), 最小值min()
print(max(a)) 输出: 5print(min(a)) 输出:1
判断某个元素是否在列表中,in
print(0 in a) # 输出:Falseprint(1 in a) # 输出: Trueprint(0 not in a) # 输出: Trueprint(1 not in a) # 输出:False
元组 tuple ()
另一种有序列表叫元组:tuple。tuple和list非常类似,但是tuple一旦初始化就不能修改。 所有的操作
可以参考列表list的操作
集合set
无序的列表集合,且不能有重复值,可以用作自动去重
d = set([1,2,3,3])e = set([3,2,1])print(d == e)
输出: True
注:对于set的理解,廖雪峰老师的原文:set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。
而我个人觉得把set 和 list, tuple 归为一类更好理解。因为无序,所以集合不能切片操作,如果要结合向列表list那样操作,可以用list(d)再转成列表
集合添加元素 add.
d.add(4)
集合删除元素 remove
d.remove(3)
字典dict {}
Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。
d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}d['Michael']
输出 95
字典是无序的数组,所以不能切片操作。
取出列表中指定元素,用get, 或者直接用key值
d['Michael'] # 输出 95d.get('Michael') # 输出 95
判断key值是否存在 in 注意:这个方法只能判断key值,不能判断value
print('Michael' in d) # 输出 Trueprint(95 in d) # 输出 False
字典的赋值,修改元素
d['Michael'] = 20print(d)
输出 {'Bob': 75, 'Michael': 20, 'Tracy': 85}
添加元素,通过赋值的方法可以直接添加元素
d['Ella'] = 20print(d)
输出 {'Bob': 75, 'Ella': 20, 'Michael': 95, 'Tracy': 85}
输出字典的key值
print(d.keys())
输出字典的value值
print(d.values())
将两个列表组合成一个dict, map()
names = ['Michael', 'Bob', 'Tracy']scores = [95, 75, 85]d = dict(map(lambda x,y:[x,y], names,scores))
映射函数 map(function, iterable)
function: 要重复运行的函数
iterable: 一个或多个序列(列表,元组,集合)
对每个列表里的数组求平方:
def square(x):return x*xprint(map(square, [1,2,3,4,5]))
也可以写成
print(map(lambda x: x*x, [1,2,3,4,5]))
两个列表的元素相加求和
a = [1, 2, 4, 5, 6]b = [4, 5, 6, 7, 8]print(map(lambda x,y: x+y, a,b))
但是以下的写法是错误的
print(map(sum,a,b))
只有运行本程序时,才会运行以下函数,如果作为库被导入则不运行
if __name__ == '__main__':