Note Of Python

记录下学习Python的过程。

第一本书:《Python基础教程第二版》
时间:2017-07-31至
第一章 2017-07-31至2017-08-02
第二章 2017-08-03至2017-08-08 擦,隔了个周末,然而我并没有学习啊,罪过罪过
第三章 2017-08-08至2017-08-08字符串看的倒是挺快,反正我也记不住,唯有实际工作的多操练才能有所
提高吧~
第四章 2017-08-13至2017-08-13 工作一直用R,这python学多少忘多少吧~
第五章 2017-08-13至2017-08-13 条件、循环和其他语句
第六章 2017-08-21至2017-08-21 抽象、一周没看咯~
第七章 2017-09-11至2017-09-12 更加抽象 【看不懂都。。。】
第八章 2017-09-12至2017-09-12 异常 【看不懂都。。。】

1、Spyder恢复默认页面的方式
#版本型号Anaconda2-4.0.0-Windows-x86_64
1、View-Panes,勾选相应袁术
2、Reset window layout即可
2、python中的除法
# 针对2.X版本
# 整数之间的除法只保留整数部分
print 3/2 # 0
# 希望执行普通的除法
from __future__  import division
print 3/2 #1.5
# 此时整除的实现
print 3//2
3、其他运算
# 乘方运算
2**3 #8
pow(2,3)
# 取余运算
5 % 2 #1
# 保留小数位数
round(5.0/3,2) #1.67
# 拼接字符串
"Hello,"+"World"
4、获取输入数据:input语句
#在页面输入即可赋值给x
x = input("x: ")
# raw_input函数,把输入作为原始数据
# 输入的内容以字符串形式保存
raw_input("What's your name")
5、导入模块
# 导入模块
import math
# 调用模块的函数
math.floor(32.9) #32.0
# 确定不会导入多个函数时,调用函数
# 此时可以直接调用函数,不用加上模块的名字
from math import floor
floor(32.9) #32.0
# 类似R里的package::function和library(package)
# 别名
## 函数别名
from module import function as f1
## 模块别名
import module as mk
6、索引&分片&序列
# 索引
# 0表示第一个元素的位置,-1表示最后一个元素的位置
'Hello'[1] # 'e'
'Hello'[0] # 'H'
# 分片
# 类似于R中取得向量的某些元素
# []内指元素的索引,左闭右开,即下例中取的是第2和3位置的个元素
numbers=[1,2,3,4,5]
numbers[2:4] # [3,4]
# 需要获取最后三个元素
numbers[2:]
# 获取整个序列
numbers[:]
# 获取第2至倒数第二的所有元素
numbers[1:-1] # [2,3,4]
# 上面的方法就不用考虑中间的元素个数,更加方便处理数据
# 间隔取数
numbers[0:4:2]#[1,3]
numbers[::2]#[1,3,5]
# 序列相加,类似与R里向量追加元素??
[1,2]+[3,4] #[1,2,3,4]
# 序列乘法
## 产生虚的序列,原来的序列将被重复n次
[1,2]*3 # [1,2,1,2,1,2]
# 序列长度、最大最小值
numbers=[100,34,678]
print[len(numbers),max(numbers),min(numbers)] #[3 ,678 ,34]
print[len('abc'),max('abc'),min('abc')] # [3, 'c' ,'a']
7、列表相关
# 元素赋值
x=[1,2,3]
x[1]=10;x # [1,10,3]
# 删除元素
del x[1];x # [1,3]
# 分片赋值
x=[1,2,3];x[1:]=[3,4,5];x # [1,3,4,5]
# 追加元素,被追加的列表改变
## 追加单个元素append
x=[1,2,3];x.append(4);x # [1,2,3,4]
## 追加多个元素extend
x=[1,2,3];x.extend([4,5,6]);x # [1,2,3,4,5,6]
# 计数count
## 类似R里的table,但是不灵活
x=[1,2,1];x.count(1) # 2
# 索引index
## 类似R里的which,但是只返回第一个匹配项索引
x=[1,2,3,4];x.index(2) # 1
# 插入元素insert
x=[1,2,3];x.insert(1,'second') # [1,'second',2,3]
# 移除pop
## 默认移除最后一个元素
x=[1,2,3];x.pop(1);x # [1,3]
# 移除满足某条件的元素
## 只针对第一个匹配项
x=[1,2,3,2,1];x.remove(2);x # [1,3,2,1]
# 反向储存
## 类似R里的rev()
x=[1,2,3];x.reverse();x # [3,2,1]
# 排序sort
x=[5,4,3];x.sort();x # [3,4,5]注意此时x的值也改变
## 不改变列表本身元素
x=[3,2,1];y=sorted(x)
x # [3,2,1]
y # [1,2,3]
8、元组相关
# 创建元组
1,2,3 # (1,2,3)
# tuple函数
## 把序列转换成元组
tuple('Hello') # ('H', 'e', 'l', 'l', 'o')
## 访问元素类似列表
## 不能改变列表的值
9、字符串相关
## 字符串不可变
# 拼接字符串
'Hello'+',World'
# 复制字符串,类似R的rep函数
'H'*5 # 'HHHHH'
['H'*5] # ['H','H','H','H','H']
# 查找子字符串find
'ABCBA'.find('B') # 1
# 分割
'L-O-V-E'.split('-') # ['L', 'O', 'V', 'E']
''.join('L-O-V-E'.split('-')) # 'LOVE'
# 拼接,类似R中paste0
'-'.join('LOVE') # 'L-O-V-E'
# 返回小写
'HELLO'.lower() # 'hello'
# 查找并且替换
'Helloe'.replace('e',"-note-") # 'H-note-llo'
# 去除两侧的空格
' hell o '.strip() # 'hell o'
10、字典相关
# 创建字典
phonebook={'Alice':'110','Ben':'120'}
## 或者dicts函数
items=[('Alice','110'),('Ben','120')]
phonebook1=dict(items)
## 用fromkeys
## 只有键名,没有值,不知道怎么方便的赋值
dict.fromkeys(['Alice','Ben'],'unkonow') #  {'Alice': 'unkonow', 'Ben': 'unkonow'}
# 取出对应键的值
## get 可以提供默认值
phonebook['Alice'] # '110'
phonebook.get('Alice','not exist') # '110'
# 新增字典元素
phonebook['Cindy']='119'
# 清除字典clear
## 比较奇葩,清空x时y也会删掉啊,同时如果复制,y改变x也改变
x={'A':'1','B':'2'}
y=x;x.clear();y # {}
# 复制copy
## 和clear类似,copy之后的数据修改之后,原来的数据也会发生变化
## 需要使用copy模块中deepcopy函数
x={'A':'1','B':'2'}
y=x;y['A']=111;x # {'A':'111','B':'2'} x也发生改变
from copy import deepcopy;
x={'A':'1','B':'2'}
y=deepcopy(x);y['A']=111;x # {'A':'1','B':'2'}
# 删除元素 pop
x={'A':'1','B':'2'};x.pop('A');x # {'B': '2'}
11、判断&循环
# 缩进还是有点恶心的,还好有编辑器的帮助
k=1
if k==1:
 print 'equal'
else:
 print 'not equal'
# 多个条件判断 
k=raw_input() 
if k=='1':
 print 'is 1'
elif k=='2':
 print 'is 2'
else:
 print 'not 1 or 2'
# 判断运算符
## 等于大于之类的和R类似,不赘
## 比较运算符可以拼接使用
0<age<100
# 循环
## while
x=1
while x<=10:
 print x
 x +=1 # 累加1
## for
n=1
for n in range(1,5):
 print n
 n +=1 # 1 2 3 4
## 跳出循环
break # 跳出所有循环
continute # 跳出本次循环,进入下次循环
## 循环中的else语句,可以关注下
# 列表推导式
x=[1,2,3];[x1*x1 for x1 in x] # 1 4 9
12、抽象
# 给函数写文档
## 1、注释(#开头)
## 2、在函数开头写下字符串
def square(x):
    'Calculates the square of the number x.'
    return x*x
## 3、查看文档
square.__doc__ 
# 参数改变
## 比较奇葩传进去的参数被改变了,替代方案是复制列表的副本
## 即在n[0]之前加上n=names[:]
def change(n):
    n[0]='A'
names=['B','C']
change(names);names # ['A', 'C']
# 函数内部读取全局变量
## 1、可以直接访问全局变量,不需要向R一样,用<<-定义全局变量
## 2、重名问题,即内部变量和全局变量重复
globals()['全局变量名']
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值