Python是一种解释型语言,Python解释器每次执行一条程序
通过运行 ipython 或者 jupyter notebook 运行
快捷键记录
命令 | 操作 |
---|---|
快速运行 | shift-enter |
运行本单元格 | ctrl-enter |
快速补全 | Tab |
单元转入代码状态 | Y |
单元格转入markdown状态 | M |
上方插入单元 | A |
下方插入单元 | B |
剪切选中的单元 | X |
复制选中的单元 | C |
粘贴选中的单元 | V |
连续两次D,删除选中的单元 | DD |
#通过?显示对象的关键信息
a=1
a?
Type: int
String form: 1
Docstring:
int([x]) -> integer
int(x, base=10) -> integer
#通过??显示源代码
def sum(a,b):
return a + b
sum??
#通过%run运行代码
%run ipython_script_test.py
#通过%load运行代码
%load ipython_script_test.py
#代码中断
ctrl-c
#执行剪贴板中的程序
%paste
%cpaste
1、Python通过缩进来组织代码(一般采用4个空格)
2、Python一切皆为对象
3、Python通过#进行注释
4、pyhton传递一个变量时,实际上指向的是同一个对象
a = [1,2,3]
b = a
a.append(4)
print(b)
#输出[1,2,3,4]
5、二元操作符
a//b #a整除b
a**b #a的b次方
a is b #a和b是同一个Python对象则未true
a is not b #a和不是同一个Python对象则未true
6、可变对象与不可变对象
可变对象:列表、字典、NumPy数组
不可变对象:字符串、元组
None #null值,存在一天个实例
str #字符串
bytes #原生ASCII
float #双精度64位浮点型
bool
int
from datetime import datetime,date,time
dt = datetime(2011,10,29,20,30,21)
dt.day#输出今天日期
dt.minute#输出分钟
dt.date
dt.time
#strftime方法将datetime转化为字符串
dt.strftime('%Y-%m-%d')
#strptime把字符串转化为datetiem对象
datetime.strptime('20091031',%Y%m%d)
datetime格式化详细说明
%Y #四位年份
%y #两位年份
%m #两位的月份
%d #两位的天数
%H #24小时
%I #12小时
%M #两位的分钟
%S #秒值
%w #星期值
%U #一年中第几个星期的值,星期天是每周第一天
%W #一年中第几个星期的值,星期一是每周第一天
%F #'2020-01-01'
%d #'04/18/12'
if x < 0 :
print(1)
if x < 0 :
print(1)
elif x == 0 :
print(2)
else :
print(3)
#for循环用于遍历一个集合或一个迭代器
for value in collection:
#用值做什么
#continue跳过循环
for value in collection:
if value == 0:
continue
#break跳出循环
for value in collection:
if value == 0:
break
#当不符合条件的时候 或者 break的时候,结束循环
x = 256
total = 0
while x > 0:
if total > 500:
break
total += x
x = x // 2
#pass就是什么都不做的意思
if x < 0 :
print(1)
else :
pass
range(10)
#输出 range(0,10)
list(range(10))
#输出 [0,1,2````,9]
range(0,20,2)
#开始,结尾,步进
创建元组
tup = 4,5,6
tup = (4,5,6),(7,8)
tuple([4,0,2])
1、遍历元组
2、返回多个值
#普通拆包
tup = (4,5,6)
a,b,c = tup
#遍历元组
seq = [(1,2,3),(4,5,6),(7,8,9)]
for a,b,c in seq:
print('a{0},b={1},c={2}').format(a,b,c)
#元素的采集
values = 1,2,3,4,5
a,b,*_ = values
##一般使用 _ 来表示不想要的变量
#使用count来计量某个数值再元组中出现的次数
a = (1,2,2,2,2,2,3,3,4)
a.count(2)
列表长度可变,内容可修改,使用list或者[]来定义
a_list= [2,3,7,None]
#使用append方法将元素添加到列表的尾部
b_list.append('dwarf')
#使用insert方法将元素添加到指定位置
b_list.insert(1,'red')
```
insert的计算代价更高,可以考虑使用collections.deque
```
#使用pop移除指定元素并返回
b_list.pop(2)
#使用remove方法移除,会定位到第一个符合要求的值并去除他
b_list.remove('foo')
```
如果不考虑性能,使用append和remove
```
#使用in关键字可以检查一个值是否在列表中
'dwarf' in b_list
使用 + 连接
[4,None,'foo'] + [7,8,(2,3)]
使用extend连接(extend效率高于 +)
x = [4,None,'foo']
x.extend[7,8,(2,3)]
a = [7,8,8,8,3]
a.sort()
#可以通过 key=len 来进行字符串的排序
b.sort(key = len)
import bisect
```
bisect模块不会先判断是否排序,若列表本身未排序,会导致出现错误的结果
```
c = [1,2,2,2,3,4,7]
bisect.bisect(c,2) #输出下一个2应该出现的位置
bisect.insort(c,6) #在7前面插入6
#选出第 2 ~5 的列表
seq = [7,2,3,7,5,6,0,1]
seq[1:5]
#out:[2,3,7,5]
#使用切片进行赋值
seq[3:4] = [6,3]
#out [7,2,3,6,3,5,6,0,1]
#如果省略起始位置,则默认从第一个出发
#负索引可以从序列的尾部进行索引
seq[-4:]
#[5, 6, 0, 1]
#使用 :: 设置步长
seq[::2]
#巧用::-1进行倒叙
seq[::-1]
使用enumerate构建一个字典
some_list = ['foo','bar','baz']
mapping = {}
for i,v in enumerate(some_list):
mapping[v] = i
#out: {'foo': 0, 'bar': 1, 'baz': 2}
根据任意序列中的元素新建一个已排序的列表
sorted = ([7,1,2,6,0,3,2])
#[0, 1, 2, 2, 3, 6, 7]
list = sorted('hey man')
print(list)
#[' ', 'a', 'e', 'h', 'm', 'n', 'y']
zip将列表、元组或其他序列的元素匹配,新建一个元组构成的列表
seq1 = ['foo','bar','baz']
seq2 = ['1','2','3']
zipped = zip(seq1,seq2)
#out:[('foo', '1'), ('bar', '2'), ('baz', '3')]
将元素倒叙排序
seq1 = ['foo','bar','baz']
zipped = list(reversed(seq1))
print(zipped)
#out:['baz', 'bar', 'foo']
字典,更常用的名字是哈希表或者是关联数组
empty_dict = {}
d1 = {'a':'1','b':'2'}
d1[7] = 'an integer'
#out:{'a': '1', 'b': '2', 7: 'an integer'}
使用in来查看是否有一个键
'b' in d1
#out : TRUE
使用del 和 pop方法删除值,pop方法会在删除的同时返回被删的值
del d1['a']
ret = d1.pop['b']
使用update方法将两个字典合并,若传给相同的键则覆盖
d1 = {'a':'1','b':'2'}
d1.update({'k':1})
集合就像没有值的字典,无序且唯一的容器
#创建集合的两种方式
set([1,2,3,4])
{1,2,3,44,44}
#将两个集合合并
a = {1,2,3,4,5}
b = {1,2,3,4,4,5,7,8,8}
a.union(b)
a|b
#使用intersection获取交集
a.instersection(b)
使用 def function(): 来构造一个函数
def f():
a = 5
b = 6
c = 7
return a,b,c
a,b,c = f()
def f():
a = 5
b = 6
c = 7
return {'a':a,'b':b,'c':c}
import re
#构造函数,去除指定字符串
def remove_punctuation(value):
return re.sub('[!#?]','',value)
#第一个函数去空格,第二个函数去除指定内容,第三个函数标题化
clean_ops = [str.strip,remove_punctuation,str.title]
def clean_string(strings,ops):
result = []
for value in strings:
for function in ops:
value = function(value)
result.append(value)
return result
states = ['sdf','#####dfsdfsd']
print(clean_string(states,clean_ops))
使用lambda声明一个匿名函数
def short_function(x):
return x*2
#等同于
fun = lambda x:x*2
x = 2
fun = lambda x:x*2
print(fun(x))
#定义一个函数,返回float结果,若错误,则返回x的值
def fun(x):
try:
return float(x)
except:
return '这是错误的' + x
x = 'sdfsd'
print(fun(x))
使用sys.getdefaultencoding()检查文件的默认编码
r 只读模式
w 只写模式,创建新文件(清楚路径下的同盟文件中的数据)
x 只写模式,若存在同名文件,则失效
a 添加已经存在的文件(不存在就创建)
r+ 读写模式
b 二进制文件的模式
t 文件的文本格式