Python快速回忆笔记

此为实验楼楼+机器学习前置课程Python3 简明教程前12章内容,包含一些环境配置、基础的语法、内置的一些数据结构、字符串、函数以及类,仅为一些小的知识点,权当复习和笔记


tmux(终端的极致体验)

  • ctrl+b alt+up/down 修改大小
  • ctrl+b o 切换分屏
  • ctrl+b ctrl+o 交换分屏(一直按住ctrl)
  • ctrl+b % “|”分屏
  • ctrl+b " “–”分屏”

vim(代码编辑器)

实验楼好贴心呀把.vimrc都写好了,比心!配置文件的Github地址为wklken/vim-for-server

  • ctrl+x ctrl+f 补全路径
  • ctrl+x ctrl+n 文字补全
  • ctrl+x ctrl+v vim命令补全

更多补全请见 :help ins-completion


python

基础

  • 设置解释器类类型
1
#!/usr/bin/env python3
  • 打印浮点数
1
2
# 打印7个字符宽度、保留两位小数的浮点数
print("{:7.2f}".format(float_var))
  • 拆分tuple
1
2
data = ("1", "2", "3")
n1, n2, n3 = data
  • 计算除法
1
2
3
4
22 / 12         # 1.8333333333333
22 // 12 # 1 商的整数部分
22 % 12 # 10 求余
divmod(22, 12) # (1, 10)
  • 格式化输出 str().rjust

数据结构

  • 切割list

    • [start_idx : end_idx_next : step_size]
    • 只是返回一个拷贝,复制列表:[:]
    • 判断一个值是否在列表中:var in list
    • 从前向后的idx: 0, 1, 2, ….
    • 从后向前的idx: -1, -2, -3, ….
  • 检查循环是否结束

1
2
3
4
5
for i in range(10):
print(i, end=' ')
else:
print('
finish')
  • 列表推导式
1
2
3
list(map(lambda x : x**2, range(10)))
[x**2 for x in range(10)]
# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
1
2
[(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]
# [(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]
1
2
[x + 1 for x in [x ** 2 for x in range(3)]]
# [0, 1, 2] --> [1, 2, 5]
  • 集合运算
1
2
3
4
5
6
7
8
9
10
11
12
13
14
a = set('abcd')
b = set('cdef')

a - b
# {'a', 'b'}

a | b
# {'b', 'd', 'f', 'e', 'a', 'c'}

a & b
# {'d', 'c'}

a ^ b
# 'a', 'f', 'e', 'b'}
  • 遍历字典
1
2
for x, y in a_dict.items():
# ....
  • 添加/获取key时为其设置默认值
1
2
3
4
5
6
data = {}
data.setdefault('names', []).append('Ruby')
data.setdefault('names', []).append('Python')
# {'names': ['Ruby', 'Python']}
data.get('foo', 0)
# 0
  • 遍历列表同时获取索引
1
2
for idx, data in enumerate(['a', 'b', 'c']):
# ....
  • 同时遍历两个列表
1
2
for item1, item2 in zip(list1, list2):
# ....

字符串

  • 格式化输出字符串
1
2
print("%s, %d" % ('str', 12))
# str, 2

-判断字符串是否为回文

1
2
if s == s[::-1]:
# ....

函数

  • 函数强制关键字参数
1
2
def fn(*, arg='arg'):
print(arg)
  • 高阶函数
1
2
3
4
5
6
7
lst = [1, 2, 3, 4, 5]

print(list(map(lambda x : x*x, lst)))
# 1, 4, 9, 16, 25

print(list(filter(lambda x : x > 2, lst)))
# 3, 4, 5

  • 类属性修饰器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Person(object):
def __init__(self):
self.__year = 1978


@property
def year(self):
return self.__year


@year.setter
def year(self, year):
if year < 0:
raise Exception("Error year type")
self.__year = year


p = Person()
p.year = 1997
print(p.year)